在窗体上有N个edit box,已经排好了taborder,现在我想在一个editbox上按一个回车就能到下一个控件(60分)

  • 主题发起人 主题发起人 javanew
  • 开始时间 开始时间
J

javanew

Unregistered / Unconfirmed
GUEST, unregistred user!
我已经用了keydown 这个方法 keycode=13 nextedit1.setfocus(nextedit1是一个实实在在的
控件名)
但这样不好,如果我改变了taborder就需要修改nextedit1这个控件名,我想做到这样

if keycode=13 then
sendkey "tab"
 
我有个控件,只要摆控件的时候设置还tedit的taborder就可以了!
要就留下EMAIL
 
一种是用控件如DosMove在Delphi园地中有下载
http://mydelphi.8u8.com/kj.htm
一种是编程来实现
//回车键下移
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
selectnext(Sender As tWincontrol,True,True);
Key:=#0;
end;
end;
或用SendMessage
这个问题较常见请搜索一下以前的解答

 
Form的Keypreview设为True

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = 13) and (ActiveControl is Tedit) then
Begin
Perform(CM_DIALOGKEY,VK_TAB,0);
end;
end;
 
//让下一个控件得到焦点 --本程序只有Edit控件才有此功能
procedure SendTab(Sender: TObject);
Obj_Sender:TObject;
//应用程序重载默认的信息
Procedure CMDialogKey(var Message: TCMDialogKey);message CM_DIALOGKEY;

Procedure TzypNeoForm2.CMDialogKey(var Message: TCMDialogKey);
begin
if Message.CharCode = 13 then //按下了回车键
begin
Obj_Sender := ActiveControl;
SendTab(Obj_Sender); //选择下一个活动控件
Message.Result :=1;
exit;
end;
inherited;
end;

procedure TzypNeoForm2.SendTab(Sender: TObject);
begin

if Sender is TButton then //如果是按钮控件则执行单击过程
begin
(Sender as TButton).Click();
end
else
// if Sender is TEdit then
begin
if HiWord(GetKeyState(VK_SHIFT)) <> 0 then
SelectNext(Sender as TWinControl, False, True) //按下shift键则反向选择
else
SelectNext(Sender as TWinControl, True, True);
end ;

end;
 
onkeypress处理函数里面
if key=13 then begin
postmessage(TControl(Sender),wm_keydown,9,0);
postmessage(TControl(Sender),wm_keyup,9,0)
end
 
QuickSilver的方法就非常好
 
QuickSilver的方法就非常好,但是你所需要转移焦点的控件都必须直接在表单之上
千万不要把控件加在别的控件,例如TPanel
 
我是这么实现的,在onkeyup中加上
if key=13 then
keybd_event(9,vk_tab,0,0);
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部