在keydown事件里 if (key = 13) or (key = 40) then // 判断是按执行键 begin key := 0; perform(WM_NEXTDLGCTL, 0, 0); //移动到下一个控件 end;
procedure TForm.FormKeyPress(Sender: TObject; var Key: Char); begin if (Key = #13) then SelectNext(ActiveControl, True, True); end;
KeyPress事件: if key=#13 then begin if not (Activecontrol is Tdbgrid) then begin key:=#0; perform(WM_NextDLGCTL,0,0); end; end;
需要用回车键代替TAB键下移一个控件时,把KeyPress设为True,加入下列代码拦截击键: Procedure TForm1.FormKeyPress(Sender:Tobject;Var Key:Char); Begin if key=#13 then { 判断是按执行键} if not (ActiveControl is TDbgrid) Then Begin { 不是在TDbgrid控件内} key:=#0; perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件} end else if (ActiveControl is TDbgrid) Then{是在 TDbgrid 控件内} begin With TDbgrid(ActiveControl) Do if Selectedindex<(FieldCount-1) then Selectedindex:=Selectedindex+1{ 移动到下一字段} else Selectedindex:=0; end; End;
if (key = 13) or (key = 40) then // 判断是按执行键
begin
key := 0;
perform(WM_NEXTDLGCTL, 0, 0); //移动到下一个控件
end;
begin
if (Key = #13) then SelectNext(ActiveControl, True, True);
end;
if key=#13 then
begin
if not (Activecontrol is Tdbgrid) then
begin
key:=#0;
perform(WM_NextDLGCTL,0,0);
end;
end;
Procedure TForm1.FormKeyPress(Sender:Tobject;Var Key:Char);
Begin
if key=#13 then { 判断是按执行键}
if not (ActiveControl is TDbgrid) Then
Begin { 不是在TDbgrid控件内}
key:=#0;
perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
end else
if (ActiveControl is TDbgrid) Then{是在 TDbgrid 控件内}
begin
With TDbgrid(ActiveControl) Do
if Selectedindex<(FieldCount-1) then Selectedindex:=Selectedindex+1{ 移动到下一字段}
else Selectedindex:=0;
end;
End;
比如,你的edit1的TabOrder为1
那么edit2的TabOrder为2就可以了。
把Edit1的TapOrder属性设置成0
把Edit2的TapOrder属性设置成1
这样当焦点在Edit1时,单击Enter键,焦点就会自动转移到Edit2上了
不知道这样是不是你想知道的!!