私はCheckBoxの状態を変更するときに疑問に思っています
CheckBox->Checked=false;
CheckBoxOnClick Event を呼び出しますが、それを回避するにはどうすればよいですか?
私はCheckBoxの状態を変更するときに疑問に思っています
CheckBox->Checked=false;
CheckBoxOnClick Event を呼び出しますが、それを回避するにはどうすればよいですか?
別のオプションは、次のようなインターポーザー クラスを使用して、保護された ClicksDisable プロパティを変更することです。
type
THackCheckBox = class(TCustomCheckBox)
end;
procedure TCheckBox_SetCheckedNoOnClick(_Chk: TCustomCheckBox; _Checked: boolean);
var
Chk: THackCheckBox;
begin
Chk := THackCheckBox(_Chk);
Chk.ClicksDisabled := true;
try
Chk.Checked := _Checked;
finally
Chk.ClicksDisabled := false;
end;
end;
onClick イベント コードを次のようなもので囲むことができます。
if myFlag then
begin
...event code...
end;
実行したくない場合は、myFlag を false に設定し、チェックボックスの状態が変化した後に true に戻します。
ボタンの解決策があることを願っていますが、現在のイベントを TNotifyEvent 変数に保存し、Checkbox.OnChecked を nil に設定してから復元することができます。
この方法を試してください:
Checkbox.OnClick := nil;
try
Checkbox.Checked := yourFlag;
finally
Checkbox.OnClick := CheckboxClick;
end;
CheckBox.State := cbUnchecked;
onClickEvent
Delphiで動作しますが、これはAFAIKを起動しません