把Form的KeyPreview属性置为true,然后在Form的KeyPress事件中: if Key = #13 then SendMessage(Handle,WM_NEXTDLGCTL,0,0); 如果要做更复杂的控制,那么你就要判断当前控件的类型,比如只有TEdit和TDBEdit控件才做: if Key=#13 then begin if (ActiveControl <>nil) then begin if (ActiveControl is TEdit) or (ActiveControl is TDBEdit) then SendMessage(Handle,WM_NEXTDLGCTL,0,0); end;end;
在KEYDOWN中 if key=13 then Keybd_Event(vk_Tab,0,0,0);
下面的代碼實現以上功能有何利弊? procedure TFormCompany.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=13 then FormCompany.SelectNext(FORMCOMPANY.ActiveControl ,true,TRUE); end;
if Key = #13 then
SendMessage(Handle,WM_NEXTDLGCTL,0,0);
如果要做更复杂的控制,那么你就要判断当前控件的类型,比如只有TEdit和TDBEdit控件才做:
if Key=#13 then
begin
if (ActiveControl <>nil) then
begin
if (ActiveControl is TEdit) or (ActiveControl is TDBEdit) then
SendMessage(Handle,WM_NEXTDLGCTL,0,0);
end;end;
if key=13 then
Keybd_Event(vk_Tab,0,0,0);
procedure TFormCompany.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then FormCompany.SelectNext(FORMCOMPANY.ActiveControl ,true,TRUE);
end;