En su momento tambien me desconcertó ese funcionamiento, así que derivé de Tcheckbox y me creé el mio propio:
Código Delphi
[-]
unit CheckBoxNoClick;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, StdCtrls;
type
TCheckBoxNoClick = class(tcheckBox)
private
protected
public
published
procedure SetChecked(Value:Boolean);
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Standard', [TCheckBoxNoClick]);
end;
procedure TCheckBoxNoClick.SetChecked(Value: Boolean);
begin
try
clicksdisabled := True;
inherited;
finally
ClicksDisabled:= False;
end;
end;
end.
Cuando no se quiere que desencadene el evento OnClick por código, se usa SetChecked.
Cuando se necesita el comportamiento normal, se usa como siempre.
Saludos