关于用键盘上的方向键来改变控件焦点的问题,按左方向键先...再回到上一个控件,按右方向键....

yaoyaozhang 2002-05-30 04:32:18
要求是这样的:
form上有一些edit和combobox和其它几个输入的控件,比如在edit中时,按左方向键(VK_LEFT)时,先检查光标是否是否已经走到了edit的左边头头,如果是,则输入的焦点回到上一个控件(即shift+tab的功能),else 则向左移一格(即原有的功能),右移也一样。

谢谢大家!我对向左或向右移一格不知用什么方法与属性来实现。
...全文
588 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
forgot 2002-05-30
  • 打赏
  • 举报
回复
if (Key = VK_left) and (TEdit(Sender).SelStart =1) then
begin
keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_TAB,0,0,0);
keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
end;
if (Key=Vk_right) and (TEdit(Sender).SelStart := Length(TEdit(Sender).Text)) then
begin
//keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_TAB,0,0,0);
keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
//keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
end;
lanbada 2002-05-30
  • 打赏
  • 举报
回复
用tedit(sender)
tcombobox(sender)
来代替可以
指定所有的EDIT的KEYDOWN事件指向第一个就可以了
yaoyaozhang 2002-05-30
  • 打赏
  • 举报
回复
有比较多的edit和combobox,能否用sender 方法来一次性解决?省得一个个写代码?
forgot 2002-05-30
  • 打赏
  • 举报
回复
if (Key = VK_left) and (Edit1.SelStart =1) then
begin
keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_TAB,0,0,0);
keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
end;
if (Key=Vk_right) and (Edit1.SelStart := Length(Edit1.Text)) then
begin
//keybd_event(VK_SHIFT,0,0,0);
keybd_event(VK_TAB,0,0,0);
keybd_event(VK_TAB,0,KEYEVENTF_KEYUP,0);
//keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧