一个程序如何进行所有检查?
One procedure for all checks how?
在我的表单中,有 30 个或更多 TCheckbox,前面有 TNumberBox。每个 TCheckbox 和 TNumberBox 都连接在一起,例如 CheckBox1 名称是 C1,NumberBox 是 C1E,Checkbox2 是 C2,NumberBox2 是 C2E 等等。
如果选中 C1,则将启用 C1E。我不想为每个 Tcheckbox 使用不同的 onclick 事件。我只想对所有 TCheckbox onclick 事件使用一个过程。
我怎样才能做到这一点 ?
您可以为每个复选框分配以下 OnClick
处理程序(或类似的东西):
procedure TYourFormName.CheckBoxClick(Sender: TObject);
var
Assoc: TControl;
ChkName: string;
begin
ChkName := TCheckBox(Sender).Name; // e.g. 'C1', 'C2', ...
Assoc := TControl(FindComponent(ChkName + 'E')); // e.g. 'C1E', 'C2E', ...
if Assigned(Assoc) then
Assoc.Enabled := TCheckBox(Sender).Checked;
end;
如果您在设计时创建了这些复选框和数字框,则可以使用实时绑定。打开 LiveBindings Designer 并找到您的组件。将可见的 属性 添加到您的号码框(单击成员底部的三点)。然后将复选框的 IsChecked 属性 与数字框的 Visible 属性 连接起来(单击并拖动)。
在我的表单中,有 30 个或更多 TCheckbox,前面有 TNumberBox。每个 TCheckbox 和 TNumberBox 都连接在一起,例如 CheckBox1 名称是 C1,NumberBox 是 C1E,Checkbox2 是 C2,NumberBox2 是 C2E 等等。 如果选中 C1,则将启用 C1E。我不想为每个 Tcheckbox 使用不同的 onclick 事件。我只想对所有 TCheckbox onclick 事件使用一个过程。 我怎样才能做到这一点 ?
您可以为每个复选框分配以下 OnClick
处理程序(或类似的东西):
procedure TYourFormName.CheckBoxClick(Sender: TObject);
var
Assoc: TControl;
ChkName: string;
begin
ChkName := TCheckBox(Sender).Name; // e.g. 'C1', 'C2', ...
Assoc := TControl(FindComponent(ChkName + 'E')); // e.g. 'C1E', 'C2E', ...
if Assigned(Assoc) then
Assoc.Enabled := TCheckBox(Sender).Checked;
end;
如果您在设计时创建了这些复选框和数字框,则可以使用实时绑定。打开 LiveBindings Designer 并找到您的组件。将可见的 属性 添加到您的号码框(单击成员底部的三点)。然后将复选框的 IsChecked 属性 与数字框的 Visible 属性 连接起来(单击并拖动)。