我想使用2个TEdit项目和一个按钮。如何检查所有编辑是否具有某些文本值。之后我想激活一个按钮。
主要表格Onshow活动: Btn1.Enabled:= FALSE;
如果Edit1.text + Edit2.text有值,那么btn1.enabled:= true?
感谢您的帮助!
答案 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
事件,但是当场景发生变化时,它的差异会变得明显:
OnChange
个事件,则需要更改和程序,将其分配给每个新控件的OnChange
属性。OnChange
事件,可以让您知道某些内容发生了变化。操作'OnUpdate
事件使您无需确切知道更新何时适当。它们在程序闲置和按需时运行。答案 1 :(得分:3)
使用Edit1.OnChange
事件,并将其设置为也处理Edit2.OnChange
。事件处理程序代码很简单:
procedure TForm1.Edit1Change(Sender: TObject);
begin
Btn1.Enabled := (Edit1.Text <> '') and (Edit2.Text <> '');
end;