lcl: don't trigger the onClick event for the unchecked radio buttons (bug #0014989)

git-svn-id: trunk@26761 -
This commit is contained in:
paul 2010-07-21 08:03:19 +00:00
parent fc9813f9cf
commit d5c10dfaa2
3 changed files with 17 additions and 5 deletions

View File

@ -56,12 +56,11 @@ procedure TCustomCheckBox.DoChange(var Msg);
var
NewState: TCheckBoxState;
begin
//debugln('TCustomCheckBox.DoChange START ',dbgsname(Self),' ',dbgs(ord(FState)));
NewState := RetrieveState;
if FState = NewState then exit;
FState := NewState;
//debugln('TCustomCheckBox.DoChange CHANGED ',dbgsname(Self),' ',dbgs(ord(FState)));
inherited Click; // emulate delphi OnClick behaviour
// emulate delphi OnClick behaviour
DoClickOnChange;
end;
class procedure TCustomCheckBox.WSRegisterClass;
@ -156,8 +155,8 @@ begin
TCustomAction(Action).Checked := FState = cbChecked;
ApplyChanges;
DoOnChange;
if (not ClicksDisabled) then
inherited Click;
if not ClicksDisabled then
DoClickOnChange;
end;
end;
@ -248,6 +247,11 @@ begin
Params.Style := Params.Style or BS_3STATE;
end;
procedure TCustomCheckBox.DoClickOnChange;
begin
inherited Click;
end;
function TCustomCheckBox.DialogChar(var Message: TLMKey): boolean;
begin
if IsAccel(Message.CharCode, Caption) and CanFocus then

View File

@ -105,6 +105,12 @@ begin
end;
end;
procedure TRadioButton.DoClickOnChange;
begin
if State = cbChecked then
inherited DoClickOnChange;
end;
procedure TRadioButton.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);

View File

@ -1189,6 +1189,7 @@ type
protected
class procedure WSRegisterClass; override;
procedure Click; override;
procedure DoClickOnChange; virtual;
function RetrieveState: TCheckBoxState;
procedure InitializeWnd; override;
procedure Toggle; virtual;
@ -1323,6 +1324,7 @@ type
procedure SetChecked(Value: Boolean); override;
procedure DoChange(var Msg); message LM_CHANGED;
procedure DoApplyChanges;
procedure DoClickOnChange; override;
procedure CreateParams(var Params: TCreateParams); override;
public
constructor Create(TheOwner: TComponent); override;