当用户按下 TEdit 中不是数字的键时显示提示的过程
Procedure to show a hint when user press a key that is not a number in TEdit
我想为 TEdit
编写一个函数,使 属性 NumbersOnly
处于活动状态。如果用户没有输入数字,而是输入了字母,该函数将使用 ShowHint
和输入的键显示自定义消息。
我在下面写了这段代码。但问题是无论我按什么键,数字或字母,提示都会出现。要查看哪里需要帮助的问题,这是代码:
procedure nHint(hHint: string; AEdit: TEdit);
var
point: TPoint;
Key: Char;
begin
if AEdit.NumbersOnly = true then
begin
if not(CharInSet(Key, ['0' .. '9', #8])) then
begin
form1.BalloonHint1.Description := hHint;
point.X := AEdit.Width div 2;
point.Y := AEdit.Height div 1;
form1.BalloonHint1.ShowHint(AEdit.ClientToScreen(point));
Abort;
end
else
begin
form1.BalloonHint1.HideHint;
end;
end;
end;
procedure TFrame1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
nHint('Number Only', Edit1);
end;
您的问题是您将 key
标定为局部变量,而您没有对其进行初始化。
为了使您的程序正常工作,您需要将 key
作为参数传递给您的程序:
改变
procedure nHint(hHint: string; AEdit: TEdit);
为此:
procedure nHint(hHint: string; AEdit: TEdit; var Key: Char);
和去掉局部变量key
当你调用它时,你传递了额外的参数。
所以改变这个:
nHint('Number Only', Edit1);
对此:
nHint('Number Only', Edit1, Key);
然后就可以了
我想为 TEdit
编写一个函数,使 属性 NumbersOnly
处于活动状态。如果用户没有输入数字,而是输入了字母,该函数将使用 ShowHint
和输入的键显示自定义消息。
我在下面写了这段代码。但问题是无论我按什么键,数字或字母,提示都会出现。要查看哪里需要帮助的问题,这是代码:
procedure nHint(hHint: string; AEdit: TEdit);
var
point: TPoint;
Key: Char;
begin
if AEdit.NumbersOnly = true then
begin
if not(CharInSet(Key, ['0' .. '9', #8])) then
begin
form1.BalloonHint1.Description := hHint;
point.X := AEdit.Width div 2;
point.Y := AEdit.Height div 1;
form1.BalloonHint1.ShowHint(AEdit.ClientToScreen(point));
Abort;
end
else
begin
form1.BalloonHint1.HideHint;
end;
end;
end;
procedure TFrame1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
nHint('Number Only', Edit1);
end;
您的问题是您将 key
标定为局部变量,而您没有对其进行初始化。
为了使您的程序正常工作,您需要将 key
作为参数传递给您的程序:
改变
procedure nHint(hHint: string; AEdit: TEdit);
为此:
procedure nHint(hHint: string; AEdit: TEdit; var Key: Char);
和去掉局部变量key
当你调用它时,你传递了额外的参数。
所以改变这个:
nHint('Number Only', Edit1);
对此:
nHint('Number Only', Edit1, Key);
然后就可以了