2015-02-06 91 views
0

我想使用2个TEdit项目和一个按钮。我如何检查所有的编辑是否有一些文本值。之后,我想激活一个按钮。在编辑框中输入文字时需要启用按钮

主要形式Onshow事件: Btn1.Enabled:= false;

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

感谢您的帮助!

回答

7

你是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事件可以让您不必确切知道更新何时适用。他们在程序闲置和按需时运行。
+0

在我能够回到编辑我的地方之前,打我一个答案。 Upvoted。 – 2015-02-06 17:11:45

3

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

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

非常感谢你们! – Steve88 2015-02-06 14:33:37

+0

我个人很快会看到用于此的操作。它使代码更具说明性。 – 2015-02-06 16:58:13

相关问题