关于delphi的edit1问题,我想按键切换edit1和edit2,(100分)
如图我有三个edit,分别是edit1到edit3我就是想当我按下的时候,光标由edit1切到edit2,,再按下时光标由edit2切到edit3,,按上又切回前一个,大...
如图 我有三个edit,分别是edit1到edit3我就是想当我按下的时候,光标由edit1切到edit2,,再按下时光标由edit2切到edit3,,按上又切回前一个,大家可以用edit1.setfocus,不过如果用了两个setfocus就有问题,如果有自己的方法也行,,谢谢啦
展开
3个回答
展开全部
如果控件少的话,很容易实现的
分别在三个edit的 OnKeyPress 事件里面添加对按键的判断 就拿edit2来举例
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key = #40 then
edit3.SetFocus
else
if key = #38 then
edit1.SetFocus;
end;
edit1和edit3 同理
分别在三个edit的 OnKeyPress 事件里面添加对按键的判断 就拿edit2来举例
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key = #40 then
edit3.SetFocus
else
if key = #38 then
edit1.SetFocus;
end;
edit1和edit3 同理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
焦点移动问题,在窗体显示事件中,用edit1.setfocus使edit1得到焦点,然后在每个edit组件的键按下事件中KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=VK_Return) or (key=VK_next) then//按换行键或下一页键
edit2.SetFocus;或者edit1.SetFocus,或者edit3.SetFocus
if key=VK_prior then//按上一页键
edit1.SetFocus;
end;
如此写代码就行了。没有什么问题。我长期如此的写,如果按住换行键不放,焦点就会循环移动。 如果你认为这办法都不行的话,那就真没招了。
Shift: TShiftState);
begin
if (key=VK_Return) or (key=VK_next) then//按换行键或下一页键
edit2.SetFocus;或者edit1.SetFocus,或者edit3.SetFocus
if key=VK_prior then//按上一页键
edit1.SetFocus;
end;
如此写代码就行了。没有什么问题。我长期如此的写,如果按住换行键不放,焦点就会循环移动。 如果你认为这办法都不行的话,那就真没招了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
窗口里放三个控件,然后Delphi菜单->Edit->Tab Order由上至下设置循序,
这样按Tab键就可以切换光标了
如果还想用Enter键代替Tab键(不是很推荐)
窗口的KeyPreView设为True
在窗口的OnKeyPress事件里加入
if key=#13 then //如果按Enter键
begin
key:=#0; //不处理按Enter键
Perform(WM_NEXTDLGCTL, 0, 0); //发送一个消息跳到下一个控件
end;
这样按Tab键就可以切换光标了
如果还想用Enter键代替Tab键(不是很推荐)
窗口的KeyPreView设为True
在窗口的OnKeyPress事件里加入
if key=#13 then //如果按Enter键
begin
key:=#0; //不处理按Enter键
Perform(WM_NEXTDLGCTL, 0, 0); //发送一个消息跳到下一个控件
end;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询