把Form的KeyPreview设为True,然后在Form的OnKeyPress事件中: procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin KeyBd_Event(VK_TAB,0,0,0); KeyBd_Event(VK_TAB,0,2,0); end; end;
KeyPreview设为True procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin key:=#0; perform(WM_NEXTDLGCTL,0,0); end; end;
Postmessage(edit1.handle,WM_KeyDown,VK_TAB,0);
KeyPreview设为True procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if key=#13 then SelectNext(ActiveControl,True,True); end;
把Form的KeyPreview设为True,然后在Form的OnKeyPress事件中: procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then Postmessage(ActiveControl.handle,WM_KeyDown,VK_TAB,0); end;
把Form的KeyPreview设为True,然后在Form的OnKeyPress事件中: procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then Sendmessage(ActiveControl.handle,WM_KeyDown,VK_TAB,0); end;
用 esu(ESU) 的方法好。
给你一种更简单的方法,不用到外加代码, 不过要是你要用回车的话(比如控件的换行)就有点麻烦 procedure AppMessage( var Msg: TMsg; var Handled: Boolean); begin if Msg.Message = WM_KEYDOWN then begin if Msg.wParam = VK_RETURN then Keybd_event(VK_TAB, 0, 0, 0); end; end;在一个地方加入: application.OnMessage:=AppMessage;整个应用程序的回车都变成Tab了
我一般用这个procedure AppMessage( var Msg: TMsg; var Handled: Boolean); begin if Msg.Message = WM_KEYDOWN then begin if Msg.wParam = VK_RETURN then Keybd_event(VK_TAB, 0, 0, 0); end; end; application.OnMessage:=AppMessage;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then begin
KeyBd_Event(VK_TAB,0,0,0);
KeyBd_Event(VK_TAB,0,2,0);
end;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
perform(WM_NEXTDLGCTL,0,0);
end;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
SelectNext(ActiveControl,True,True);
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
Postmessage(ActiveControl.handle,WM_KeyDown,VK_TAB,0);
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
Sendmessage(ActiveControl.handle,WM_KeyDown,VK_TAB,0);
end;
不过要是你要用回车的话(比如控件的换行)就有点麻烦
procedure AppMessage( var Msg: TMsg;
var Handled: Boolean);
begin
if Msg.Message = WM_KEYDOWN then
begin
if Msg.wParam = VK_RETURN then
Keybd_event(VK_TAB, 0, 0, 0);
end;
end;在一个地方加入: application.OnMessage:=AppMessage;整个应用程序的回车都变成Tab了
var Handled: Boolean);
begin
if Msg.Message = WM_KEYDOWN then
begin
if Msg.wParam = VK_RETURN then
Keybd_event(VK_TAB, 0, 0, 0);
end;
end; application.OnMessage:=AppMessage;
sendmessage:等到消息处理完才,返回
postmessage:发完消息不等处理,就直接返回perform,Keybd_event,SelectNext都是delphi封装了上面的两个函数