请问如何通过敲“上”键模拟shift+tab将焦点移动到上一个控件
3个回答
2014-03-06
展开全部
你可以在FORM或者控件的Keydown事沂攀里写下如下的代码。已经测试经由过程!procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);(这里的例子是在一个Memo的控件里按“上”键)begin if (key=38) then//如不雅按下的是“上”键 begin 模仿shift+tab按键 keybd_event( VK_control, MapVirtualKey( vk_control, 0 ), KEYEVENTF_KEYUP , 0 ); keybd_event( VK_shift, MapVirtualKey( VK_shift, 0 ), 0 , 0 ); // 按下shift键 keybd_event( VK_tab, MapVirtualKey( VK_tab, 0 ), 0 , 0 ); // 按下tab键 keybd_event( VK_tab, MapVirtualKey( vk_tab, 0 ), KEYEVENTF_KEYUP , 0 ); //摊开tab键 // 摊开shift键end;留意,如不雅触发的对象是Form的话,你可能要把Form的KeyPreview属性设置为True;搞定了别忘记加分哦
2014-03-06
展开全部
若要按照Tab Order 的次序,移动到上一个核心或者下一核心,参考一下函数:bl - True 移动到TabOrder的下一‘ - False 上一个procedure mscNextCtl( ctl: TWinControl; bl: Boolean );beginvar frm: TCustomForm; frm := GetParentForm( ctl ); if Frm = nil then Exit; case bl of False: begin //TWinControl( ctl ).SelectNext( ctl, True, True ); PostMessage( frm.Handle, WM_NEXTDLGCTL, 1, 0 ); True: begin //ctl.SelectNext( ctl, False, True ); PostMessage( frm.Handle, WM_NEXTDLGCTL, 0, 0 ); end; end; end;end;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-03-06
展开全部
若何给分?感激两位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询