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

Need to enable button when text is entered in the edit boxes

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

主形式Onshow活动: Btn1.Enabled:=假;

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

感谢您的帮助!

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

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

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

Add a TActionList to your application if you don't already have one. Next, add a TAction to it. Set the action's properties so it resembles the button. (I.e., set the caption, and move the button's OnClick event handler to the action's OnExecute 处理程序。)分配按钮的 Action 属性 以引用新的操作对象。

最后,处理动作的OnUpdate event. In it, enable or disable the action as needed. The button (and any other controls you later choose to associate with the same action) will be updated accordingly

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

这看起来与处理编辑控件的 OnChange 事件非常相似,但是当场景改变时,它的区别就很明显了:

  1. 如果您添加或删除编辑控件,您只需更改这一步骤即可确保正确启用按钮。如果您正在处理 OnChange 事件,则需要更改过程 将其分配给每个新控件的 OnChange 属性.
  2. 并非所有控件都有方便的 OnChange 事件让您知道某些内容何时发生更改。 Actions 的 OnUpdate 事件使您不必确切知道更新何时合适。他们 运行 在程序空闲和点播时。