德尔福里约热内卢 10.3.2
使用 TToggleSwitch 组件,当您手动更改 State 属性时,即
ToggleSwitch1.State := tssOff
调用OnClick 事件。我该如何防止这种情况?
您有以下几种选择:
-
在设置
State
之前将OnClick
属性设置为nil
,然后还原事件处理程序。ToggleSwitch1.OnClick := nil; try ToggleSwitch1.State := ...; finally ToggleSwitch1.OnClick := ToggleSwitch1Click; end;
-
在设置
State
之前设置标志,然后清除标志,并让OnClick
事件处理程序在执行任何操作之前检查标志。ToggleSwitch1.Tag := 1; try ToggleSwitch1.State := ...; finally ToggleSwitch1.Tag := 0; end; procedure TMyForm.ToggleSwitch1Click(Sender: TObject); begin if ToggleSwitch1.Tag <> 0 then Exit; ... end;
-
使用访问器类访问受保护的
FClicksDisabled
成员,以便在更改State
时可以暂时将其设置为 True:type TToggleSwitchAccess = class(TToggleSwitch) end; TToggleSwitchAccess(ToggleSwitch1).FClicksDisabled := True; try ToggleSwitch1.State := ...; finally TToggleSwitchAccess(ToggleSwitch1).FClicksDisabled := False; end;