在我的Delphi XE2项目中,我有Form1,Label1和CheckBox1.
我的要求是设置CheckBox1.Font.Color := clGreen;.
以为我写过
procedure TForm1.FormCreate(Sender: TObject);
begin
CheckBox1.Font.Color := clGreen;
end;
Run Code Online (Sandbox Code Playgroud)
但是Font Color默认Black.所以我用其他方式定义如下:
Caption从CheckBox1,改变了Width到17.Label1旁边的CheckBox1喜欢CleckBox1 Caption.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 Event的CheckBox1可以被触发,如下图:

该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)