需要用回车键代替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;
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin CASE KEY OF vk_return:key:=vk_tab;
up 建议在FormKeyPress里使用消息。
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=VK_RETURN then begin sendmessage(handle,wm_nextdlgctl,0,0);//向下一个控件Edit key:=0; end; if key=VK_UP then begin sendmessage(handle,wm_nextdlgctl,0,1);//向上一个控件Edit key:=0; end; end; 在三个Edit中的KeyDown事件都设置成Edit1的KeyDown 就可以了
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;
Shift: TShiftState);
begin
CASE KEY OF
vk_return:key:=vk_tab;
建议在FormKeyPress里使用消息。
Shift: TShiftState);
begin
if key=VK_RETURN then begin
sendmessage(handle,wm_nextdlgctl,0,0);//向下一个控件Edit
key:=0;
end;
if key=VK_UP then begin
sendmessage(handle,wm_nextdlgctl,0,1);//向上一个控件Edit
key:=0;
end;
end;
在三个Edit中的KeyDown事件都设置成Edit1的KeyDown 就可以了