在编辑框中输入文本时需要启用按钮

时间:2015-02-06 14:19:14

标签: delphi delphi-7

我想使用2个TEdit项目和一个按钮。如何检查所有编辑是否具有某些文本值。之后我想激活一个按钮。

主要表格Onshow活动: Btn1.Enabled:= FALSE;

如果Edit1.text + Edit2.text有值,那么btn1.enabled:= true?

感谢您的帮助!

2 个答案:

答案 0 :(得分:8)

你是using actions吗?如果没有,你应该考虑它。

Add a TActionList to your application如果您还没有。接下来,为其添加TAction。设置操作的属性,使其类似于按钮。 (即,设置标题,并将按钮的OnClick事件处理程序移动到操作的OnExecute处理程序。)分配按钮的Action属性以引用新的操作对象。

最后,处理动作的OnUpdate事件。在其中,根据需要启用或禁用操作。按钮(以及您稍后选择与同一操作关联的任何其他控件)将为updated accordingly

procedure TSteveForm.ButtonActionUpdate(Sender: TObject);
begin
  TAction(Sender).Enabled := (Edit1.Text <> '') and (Edit2.Text <> '');
end;

这看起来非常类似于处理编辑控件的OnChange事件,但是当场景发生变化时,它的差异会变得明显:

  1. 如果添加或删除编辑控件,则只需更改此过程以确保正确启用该按钮。如果您正在处理OnChange个事件,则需要更改程序,将其分配给每个新控件的OnChange属性。
  2. 并非所有控件都有方便的OnChange事件,可以让您知道某些内容发生了变化。操作'OnUpdate事件使您无需确切知道更新何时适当。它们在程序闲置和按需时运行。

答案 1 :(得分:3)

使用Edit1.OnChange事件,并将其设置为也处理Edit2.OnChange。事件处理程序代码很简单:

procedure TForm1.Edit1Change(Sender: TObject);
begin
  Btn1.Enabled := (Edit1.Text <> '') and (Edit2.Text <> '');
end;