如何使用Delphi中的"Label Click"事件触发Checkbox的"Click"事件?

use*_*109 0 delphi

在我的Delphi XE2项目中,我有Form1,Label1CheckBox1.

我的要求是设置CheckBox1.Font.Color := clGreen;.

以为我写过

procedure TForm1.FormCreate(Sender: TObject);
begin
  CheckBox1.Font.Color := clGreen;
end;
Run Code Online (Sandbox Code Playgroud)

但是Font Color默认Black.所以我用其他方式定义如下:

  1. 我已删除了CaptionCheckBox1,改变了Width17.
  2. 然后我把Label1旁边的CheckBox1喜欢CleckBox1 Caption.
  3. 之后我写了:

procedure TForm1.Label1Click(Sender: TObject);
begin
  CheckBox1.Click;
end;
Run Code Online (Sandbox Code Playgroud)

Toggle了国家CheckBox1.

但我得到了[DCC Error] Unit1.pas(37): E2362 Cannot access protected symbol TCustomCheckBox.Click.

而另一个问题是,是否OnMouseDown EventCheckBox1可以被触发,如下图: Form1中

Rem*_*eau 5

Click()方法仅触发控制OnClick事件,而不是其他事件.它实际上并不会导致控件执行与点击相关的逻辑,例如更新其内部状态.

您可以像这样切换CheckBox的状态:

CheckBox1.Checked := not CheckBox1.Checked;
Run Code Online (Sandbox Code Playgroud)

或者,使用访问者类来访问受保护的成员:

type
  TCheckBoxAccess = class(TCheckBox)
  end;
Run Code Online (Sandbox Code Playgroud)

TCheckBoxAccess(CheckBox1).Toggle;
Run Code Online (Sandbox Code Playgroud)