Re: Set the CheckBox.Checked without the OnClick being called



On Fri, 08 Jun 2007 20:01:26 +0200, Fons
<fonzzzNO@xxxxxxxxxxxxxxxxxxx> wrote:


You forget:

runclickevent := true;

end;

I didn't forget...
It was up to you to determine exactly when you want to turn it back
on.

I had no idea what your program was trying to accomplish...so there
was no way for me to know when you wanted to turn it back to true. I
figured you would turn it back on whenever you felt it was
appropriate.


I used the code you write. But I didn't like it.

Why?
It worked perfectly, and it was extremely simple to implement.
Now compare that to the slew of procedures that you wrote in order to
achieve the exact same results.

But hey...what do I care. If you prefer to do things the hard way,
more power to you...


I think the following
procedures I wrote are less complicated in use. You put them in a unit
and call them. That's all. No extra variables (maybe one for every
control; because of the structure of the code) needed.

Thanks,
Fons.

procedure SetControlData(Control : TCheckBox; Data : boolean);
var Save : TNotifyEvent;
begin
Save := Control.OnClick;
Control.OnClick := nil;
Control.Checked := Data;
Control.OnClick := Save;
end;

procedure SetControlData(Control : TEdit; Data : string); overload;
var Save : TNotifyEvent;
begin
Save := Control.OnChange;
Control.OnClick := nil;
Control.Text := Data;
Control.OnChange := Save;
end;

procedure SetControlData(Control : TRadioButton; Data : boolean); overload;
var Save : TNotifyEvent;
begin
Save := Control.OnClick;
Control.OnClick := nil;
Control.Checked := Data;
Control.OnClick := Save;
end;

procedure SetControlData(Control : TRadioGroup; Data : integer); overload;
var Save : TNotifyEvent;
begin
Save := Control.OnClick;
Control.OnClick := nil;
Control.ItemIndex := Data;
Control.OnClick := Save;
end;

procedure SetControlData(Control : TListBox; Data : integer); overload;
var Save : TNotifyEvent;
begin
Save := Control.OnClick;
Control.OnClick := nil;
Control.ItemIndex := Data;
Control.OnClick := Save;
end;

procedure SetControlData(Control : TScrollBar; Data : integer); overload;
var Save : TNotifyEvent;
begin
Save := Control.OnChange;
Control.OnChange := nil;
Control.Position := Data;
Control.OnChange := Save;
end;
.