怎么实现enter(回车键)跟tab键的效果一样,在回车时自动使Taborder比自己大的物件获得焦点
如何实现enter(回车键)跟tab键的效果一样,在回车时自动使Taborder比自己大的物件获得焦点
如何实现enter(回车键)跟tab键的效果一样,在回车时自动使Taborder比自己大1的物件获得焦点~~如果大1的物件visible=false在继续往下给焦点????
------解决方案--------------------
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
if not (Activecontrol is Tmemo) then
begin
key:=#0;
keybd_event(vk_tab,mapvirtualkey(vk_tab,0),0,0);
end;
end;
end;
------解决方案--------------------
用DosMove控件或者用以下代码
procedure TFmXXX.OnSimulateTabKey(Sender: TObject; var Key: word; Shift : TShiftState);
begin
if ((Key = VK_DOWN) or (Key = VK_RETURN)) then
self.Perform(WM_NEXTDLGCTL, 0, 0) //下移
else if (Key = VK_UP) then
self.Perform(WM_NEXTDLGCTL, 1, 0); //上移
end;
end;
//初始化
procedure TFmXXX.FormCreate(Sender: TObject);
begin
self.OnKeyDown := OnSimulateTabKey;
end;
------解决方案--------------------
如何实现enter(回车键)跟tab键的效果一样,在回车时自动使Taborder比自己大1的物件获得焦点~~如果大1的物件visible=false在继续往下给焦点????
------解决方案--------------------
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
if not (Activecontrol is Tmemo) then
begin
key:=#0;
keybd_event(vk_tab,mapvirtualkey(vk_tab,0),0,0);
end;
end;
end;
------解决方案--------------------
用DosMove控件或者用以下代码
procedure TFmXXX.OnSimulateTabKey(Sender: TObject; var Key: word; Shift : TShiftState);
begin
if ((Key = VK_DOWN) or (Key = VK_RETURN)) then
self.Perform(WM_NEXTDLGCTL, 0, 0) //下移
else if (Key = VK_UP) then
self.Perform(WM_NEXTDLGCTL, 1, 0); //上移
end;
end;
//初始化
procedure TFmXXX.FormCreate(Sender: TObject);
begin
self.OnKeyDown := OnSimulateTabKey;
end;
------解决方案--------------------
- Delphi(Pascal) code
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin if not (Activecontrol is Tmemo) then begin key:=#0; keybd_event(vk_tab,mapvirtualkey(vk_tab,0),0,0); end; end; end;
------解决方案--------------------
所有需要获取焦点控件共用下面的OnKeyDown事件:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_RETURN then
PostMessage(Handle, WM_KEYDOWN, VK_TAB, 0);
end;
------解决方案--------------------
在onkeypress 里写
if key=#13 then
下一个控件.setfucse;
就可以了。前几天刚学会,试一下,可以就给分。。
------解决方案--------------------
在onkeypress里写
If Key = #13 Then SelectNext(TwinControl(Sender), True, True);
然后在其它的控件的onkeypress里直接选上一个控件的名称就可以了。不用一个一个都写,很方便