如何用键盘控制焦点的转移 在FORM中有一些BTN和几个TRACKBAR,我想用键盘上的左,右方向键控制焦点在几个TRACKBAR之间进行变变换,用上,下方向键控制TRACKBAR的拖动,应该怎么实现,请给出代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 利用RETURN代替TAB Shift + Tabperform(WM_NEXTDLGCTL,0,0);这是向下移动,请问如何向上移动??????perform(WM_NEXTDLGCTL,1,0);即可向上移动为什么不看MSDN,不看HELP你当然不知道了。perform(WM_NEXTDLGCTL,0,1)控制焦点移动,还可以利用TWinControl.SelectNext()方法来做!*********************Form.KeyPreview := true; 在Form的KeyDown中if Key = VK_RETURN thenbeginif ActiveControl is TDBGrid or ... thenPostMessage(ActiveControl.Handle, WM_KEYDOWN, VK_TAB, 0);elsePostMessage(Handle, WM_KEYDOWN, VK_TAB, 0);Key := 0;end---------------procedure EnterToTab(aForm: TForm; var Key: Char);beginif Key = #13 thenbeginkey := #0;aForm.Perform(CM_DialogKey, VK_TAB, 0);end;end;***************或者拦截Application.OnMessage即可,添加代码:if Msg.Message = WM_KEYDOWN thenbeginif Msg.wParam = VK_RETURN thenKeybd_event(VK_TAB, 0, 0, 0);end; //if PostMessage(ActiveControl.Handle, WM_KEYDOWN, VK_TAB, 0);还是这个比较好Tab键 //獲得輸入焦點procedure GetFocus(frm :TForm;Key :Char);begin case key of #13: //如果單擊回車鍵,則焦點跳往下一個控件 begin // key := #0; SendMessage(frm.Handle,WM_NEXTDLGCTL, 0, 0); // #$27: //如果單擊空格鍵,則焦點跳往上一個輸入框 #27: //如果單擊Esc鍵,則焦點跳往上一個控件 begin // key := #0; SendMessage(frm.Handle, WM_NEXTDLGCTL, 1, 0); end; end;end; 谢谢miky(miky) ,谢谢各位,问题已解决 年终总结(三):游戏对战平台研究终结篇 ado如何通过代理服务器链接sqlserver服务器? 如何实现这个功能啊? 请问delphi中的tstringlist的add()和append()的区别啊?? DBExpress 连接 mysql 4.1.7的简单问题 Tquery组件参数的使用方法(请用插入记录的例子说明) 当数据库的触发器执行时,如何使程序得知(即给予前台的使用者一定的提示) 求助 将abc.mdb转换为abc.txt文本文件? 多窗体问题 如何用BDE连接MSAccess? 问个简单的问题????
Shift + Tabperform(WM_NEXTDLGCTL,0,0);这是向下移动,请问如何向上移动??????perform(WM_NEXTDLGCTL,1,0);即可向上移动为什么不看MSDN,不看HELP你当然不知道了。perform(WM_NEXTDLGCTL,0,1)控制焦点移动,还可以利用TWinControl.SelectNext()方法来做!*********************Form.KeyPreview := true; 在Form的KeyDown中if Key = VK_RETURN thenbeginif ActiveControl is TDBGrid or ... thenPostMessage(ActiveControl.Handle, WM_KEYDOWN, VK_TAB, 0);elsePostMessage(Handle, WM_KEYDOWN, VK_TAB, 0);Key := 0;end---------------procedure EnterToTab(aForm: TForm; var Key: Char);beginif Key = #13 thenbeginkey := #0;aForm.Perform(CM_DialogKey, VK_TAB, 0);end;end;***************或者拦截Application.OnMessage即可,添加代码:if Msg.Message = WM_KEYDOWN thenbeginif Msg.wParam = VK_RETURN thenKeybd_event(VK_TAB, 0, 0, 0);end; //if
还是这个比较好Tab键
procedure GetFocus(frm :TForm;Key :Char);
begin
case key of
#13: //如果單擊回車鍵,則焦點跳往下一個控件
begin
// key := #0;
SendMessage(frm.Handle,WM_NEXTDLGCTL, 0, 0);
// #$27: //如果單擊空格鍵,則焦點跳往上一個輸入框
#27: //如果單擊Esc鍵,則焦點跳往上一個控件
begin
// key := #0;
SendMessage(frm.Handle, WM_NEXTDLGCTL, 1, 0);
end;
end;
end;