Delphi,TEdit文本作为动作触发器

时间:2018-05-25 09:54:52

标签: delphi delphi-10.1-berlin

我使用jquery slim来允许用户输入数字,例如10。

我将TEdit转换为整数,并调用计算过程。

在此计算程序中,内置了一项检查,以确保不会处理10以下的数字。

目前我使用TEdit.Text事件。假设用户想要将'10'改变为例如'50'。但是一旦删除'10'或输入'5'(后跟0),我就会触发警告,即最小数字为10。程序不会等到我完全键入5和0。

我尝试了OnChangeOnEnterOnClick,但我似乎没有克服这个问题。唯一的解决方案是添加一个单独的按钮,该按钮将使用新数字触发计算。它有效,但我可以不使用按钮吗?

2 个答案:

答案 0 :(得分:3)

使用计时器进行延迟检查,例如:

procedure TForm1.Edit1Change(Sender: TObject);
begin
  // reset the timer
  Timer1.Enabled := false;
  Timer1.Enabled := true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := false;
  // do your check here
end;

对大多数用户来说,将计时器设置为500毫秒应该没问题。

正如大卫在评论中建议的那样:显示错误对话框,使用更少侵入性的内容,例如:编辑附近标签中的错误消息或更改背景颜色。而且:阻止焦点从该控件移开并且播放声音,这也非常烦人。

对于我们的内部软件,如果出现错误,我们将控件的背景设置为黄色,并在状态栏中显示第一个此类错误的错误消息,并作为控件的提示。如果你这样做,你甚至可能不需要延迟。

答案 1 :(得分:0)

谢谢你的帮助。我尝试了计时器选项,但无法让它工作。我现在有了这个代码,它可以工作(几乎 - 见下文),但要求用户总是输入CR:

/usr/include/c++/7/stdlib.h

我在这里只使用ShowMessage()来查看示例代码是否有效。正如你们所建议的那样,在真正的程序中,我把它留了下来。 我还包括'错误输入黄色'(感谢大卫)。唯一的问题是如果用户运行这个,我会从我的电脑发出一声哔哔声。我看不出出了什么问题。但是什么导致了哔哔声?