14

私はCheckBoxの状態を変更するときに疑問に思っています

CheckBox->Checked=false;

CheckBoxOnClick Event を呼び出しますが、それを回避するにはどうすればよいですか?

4

9 に答える 9

10

別のオプションは、次のようなインターポーザー クラスを使用して、保護された 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;
于 2010-02-15T07:57:32.873 に答える
10

onClick イベント コードを次のようなもので囲むことができます。

if myFlag then
  begin
    ...event code...
  end;

実行したくない場合は、myFlag を false に設定し、チェックボックスの状態が変化した後に true に戻します。

于 2010-02-15T07:18:56.770 に答える
6

ボタンの解決策があることを願っていますが、現在のイベントを TNotifyEvent 変数に保存し、Checkbox.OnChecked を nil に設定してから復元することができます。

于 2010-02-15T07:02:46.037 に答える
5

この方法を試してください:

Checkbox.OnClick := nil;
try
  Checkbox.Checked := yourFlag;
finally
  Checkbox.OnClick := CheckboxClick;
end;
于 2016-03-28T10:50:08.600 に答える
-1

CheckBox.State := cbUnchecked;onClickEventDelphiで動作しますが、これはAFAIKを起動しません

于 2011-10-11T13:47:25.160 に答える