WINDOW API:keybd_event(VK_SHIFT,0,KEYEVENTF_EXTENDEDKEY or 0,0); keybd_event(VK_DOWN,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); keybd_event(VK_SHIFT,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
to nne998(tony) : 好象没有什么反应。 我是要模拟一个shift+tab的按键,即让焦点去到上一个控件。 所以我改成keybd_event(VK_SHIFT,0,KEYEVENTF_EXTENDEDKEY or 0,0); keybd_event(VK_Tab,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); keybd_event(VK_SHIFT,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);但是没有反应。
改为:keybd_event(VK_SHIFT,0,KEYEVENTF_EXTENDEDKEY or 0,0); keybd_event(VK_TAB,0,KEYEVENTF_EXTENDEDKEY or 0,0); keybd_event(VK_TAB,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); keybd_event(VK_SHIFT,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);可以了.
好象没法通过编译。搞掂即时送上100分。
keybd_event(VK_DOWN,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
好象没有什么反应。
我是要模拟一个shift+tab的按键,即让焦点去到上一个控件。
所以我改成keybd_event(VK_SHIFT,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(VK_Tab,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);但是没有反应。
keybd_event(VK_TAB,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(VK_TAB,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(VK_SHIFT,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);可以了.
perform(WM_NEXTDLGCTL,1,0);//向上移动焦点。
比如新建一个tedit类的组件TxxxEdit,加入
protected
{ Protected declarations }
procedure KeyDown(var Key: Word;Shift: TShiftState); override;procedure TxxxEdit.KeyDown(var Key: Word; Shift: TShiftState);
begin
perform(WM_NEXTDLGCTL,1,0);
end;
这样做没有反应。
nne998(tony) 的方法可以,但我觉得好象比较偏门一点,不知道会不会有其它的作用。
所以还想继续请教各位有什么其它的方法,请不吝赐教。