procedure TForm1.doenterastab(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; //----------------------------------------- procedure Tkeyfrm.FormCreate(Sender: TObject); begin application.OnMessage :=doenterastab; {程序运行期间不断接受WM_KEYDOWN信息} {若按下VK_RETURN我们模拟一个 } { 键盘事件,把VK_TAB作为参数传送 } {在整个程序中都起作用 end;
两中方法供你参考 1 private procedure DoEnterAsTab(var Msg: TMsg; var Handled: Boolean); { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm} procedure Tform1.DoEnterAsTab(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; //if end;procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin Application.OnMessage := DoEnterAsTab; end;end. 2.把enter转换成tab 要先在form 的事件里的onkeydown中添上tab,还要在要用的控件的onkeydown中选上tab procedure TGZRZLR.tab(Sender: TObject; var Key: Word; Shift: TShiftState); begin if ( key=vk_down)or(key=vk_return) then begin selectnext(activecontrol,true,true); end; if (key=vk_up) then begin selectnext(activecontrol,false,true); end; key:=0; end;
同意 皮皮lu 也可以: procedure edit.keydown(...) begin if key=vk_return then . . . end;
perform(WM_NEXTDLGCTL,0,0);
procedure doenterastab(var msg:tmsg;var handled: boolean);
//------------------------------------------------------------
procedure TForm1.doenterastab(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;
//-----------------------------------------
procedure Tkeyfrm.FormCreate(Sender: TObject);
begin
application.OnMessage :=doenterastab; {程序运行期间不断接受WM_KEYDOWN信息}
{若按下VK_RETURN我们模拟一个 }
{ 键盘事件,把VK_TAB作为参数传送 }
{在整个程序中都起作用
end;
1 private
procedure DoEnterAsTab(var Msg: TMsg; var Handled: Boolean);
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure Tform1.DoEnterAsTab(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; //if
end;procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
Application.OnMessage := DoEnterAsTab;
end;end.
2.把enter转换成tab
要先在form 的事件里的onkeydown中添上tab,还要在要用的控件的onkeydown中选上tab
procedure TGZRZLR.tab(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if ( key=vk_down)or(key=vk_return) then begin
selectnext(activecontrol,true,true);
end;
if (key=vk_up) then begin
selectnext(activecontrol,false,true);
end;
key:=0;
end;
也可以:
procedure edit.keydown(...)
begin
if key=vk_return then
.
.
.
end;