delphi中如何实现ENTER键后按需要自动跳转到输入框
例:一共有三个输入框分别是:edit1,edit2,edit3。需要在输入时先输入edit1按enter后再输入edit2,enter后再输入edit3;...
例:一共有三个输入框 分别是:edit1,edit2,edit3。需要在输入时先输入edit1 按enter后再输入edit2,enter后再输入edit3;
展开
若以下回答无法解决问题,邀请你更新回答
展开全部
一、傻瓜式
在edit1和edit2上分别编写按键抬起事件处理过程,大致如下:
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = VK_RETURN then
Edit2.SetFocus;
end;
procedure TForm1.Edit2KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = VK_RETURN then
Edit3.SetFocus;
end;
二、进阶式
比刚才那个的需求增强一些,在edit3上按回车,循环到edit1,为edit1、edit2和edit3安排统一的按键抬起处理过程,且分别设置它们的属性Tag为1、2、3;如果需求不要增强的,将下面的数组定义中去掉最后一个,且edit3上不挂该按键抬起事件过程即可。
procedure TForm1.EditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
const
C_asEditName : array[ 1..3 ] of string = ( 'edit2', 'edit3', 'edit1' );
var
X : TWinControl;
begin
if Key <> VK_RETURN then
Exit;
X := TWinControl( FindComponent( C_asEditName[ TEdit( Sender ).Tag ] ) );
if Assigned( X ) then
X.SetFocus;
end;
在edit1和edit2上分别编写按键抬起事件处理过程,大致如下:
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = VK_RETURN then
Edit2.SetFocus;
end;
procedure TForm1.Edit2KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = VK_RETURN then
Edit3.SetFocus;
end;
二、进阶式
比刚才那个的需求增强一些,在edit3上按回车,循环到edit1,为edit1、edit2和edit3安排统一的按键抬起处理过程,且分别设置它们的属性Tag为1、2、3;如果需求不要增强的,将下面的数组定义中去掉最后一个,且edit3上不挂该按键抬起事件过程即可。
procedure TForm1.EditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
const
C_asEditName : array[ 1..3 ] of string = ( 'edit2', 'edit3', 'edit1' );
var
X : TWinControl;
begin
if Key <> VK_RETURN then
Exit;
X := TWinControl( FindComponent( C_asEditName[ TEdit( Sender ).Tag ] ) );
if Assigned( X ) then
X.SetFocus;
end;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询