如何通过光标键移动窗口的控件的焦点?(50分)

  • 主题发起人 主题发起人 zouming
  • 开始时间 开始时间
Z

zouming

Unregistered / Unconfirmed
GUEST, unregistred user!
1 form1上有groupbox1,groupbox2. groupbox1上有radiobutton1,radiobutton2
groupbox2上有radiobutton3. 窗口上有button1,button2.
问:如何通过光标键移动,按一定顺序移动各个控件的焦点?
2 form2上有pagecontrol1,pagecontrol1上有tabsheet1,tabsheet2.tabsheet1上有
listview1,tabsheet2上有listview2
问:如何通过光标键移动,按一定顺序移动各个控件的焦点?为什么不能通过键盘(不能使用mouse)
激活listview?
 
perform(WM_NEXTDLGCTL,0,0)
 
试过,没有用,我也试过radiobutton1.setfocus,都没有用
 
注意!有些控件是不能获得焦点的,比如SpeedButton就不会
 
它们都有一个属性:叫Taborder,你应该根据它们的先后顺序设置它们的大小,一般是连续的,从0开始,另外TabStop要设为True,在Object Inspector中设置就可以了,当然你也可以在运行时设置,程序运行时按Tab键和上下左右移动键可以移动焦点,
 
先将 Form1 的 KeyPreview 为 True。

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_UP: ActiveControl := FindNextControl(ActiveControl, True, True, False);
VK_DOWN: ActiveControl := FindNextControl(ActiveControl, False, True, False);
end;
end;
 
对于象MEMO这样的控件还是不行啊
 
当然,除非设置dmemo的wantreturn
 
用Form的OnKeyDown事件
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部