用户按下TEdit中不是数字的键时显示提示的过程

时间:2016-01-11 12:54:26

标签: delphi numbers procedure

我想将函数写入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;

1 个答案:

答案 0 :(得分:1)

您的问题是您将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);

然后它起作用