按下Enter如何实现光标跳转(50分)

  • 主题发起人 主题发起人 hqlww
  • 开始时间 开始时间
H

hqlww

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位富翁,如何实现按下Enter如何实现光标跳转,我知道可以用setfocus可以实现
焦点的跳转,但是感觉这样太复杂了,还有别的办法吗?是不是给他设置成控件来使用呢?
谁能提供这样的一个控件给我,我问的问题也许比较简单,不要笑话。多谢各位!
 
procedure TfmMain.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
case Key of
VK_RETURN :
begin
if (not (ActiveControl is TBitBtn)) and (not (ActiveControl is TMemo)) and (not (ActiveControl is TDBMemo)) Then
Begin
perform(WM_NEXTDLGCTL,0,0);
end ;
end ;
... ...
 
FORM的PREVIEW属性设为TRUE
 
把TABINDEX排列好,然后增加下面事件
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
perform(WM_NEXTDLGCTL,0,0)
end;
 
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
selectnext(activecontrol,true,true);
end;
 
先将FORM的PREVIEW属性设为TRUE,再按天什的方法!
 
最好是模拟键盘发Tab键和Shift+Tab键
procedure MapShiftTab;
begin
Keybd_Event(VK_Shift,MapVirtualKey(VK_Shift,0),0 ,0 );
Keybd_Event(VK_Tab,MapVirtualKey(VK_Tab,0),0 ,0 );
Keybd_Event(VK_Tab,MapVirtualKey(VK_Tab,0),KEYEVENTF_KEYUP,0 );
Keybd_Event(VK_Shift,MapVirtualKey(VK_Shift,0),KEYEVENTF_KEYUP,0);
end;

procedure MapTab;
begin
Keybd_Event(VK_Tab,MapVirtualKey(VK_Tab,0 ),0 ,0 );
Keybd_Event(VK_Tab,MapVirtualKey(VK_Tab,0 ),KEYEVENTF_KEYUP,0);
end;
 
设置FORM的KeyPress属性为真,再按照天真的方法做。
 
后退
顶部