[Lazarus] TControl.Click?
Mattias Gaertner
nc-gaertnma at netcologne.de
Sat Oct 1 15:23:31 CEST 2011
On Sat, 01 Oct 2011 14:03:38 +0100
Martin <lazarus at mfriebe.de> wrote:
> On 01/10/2011 09:05, Mattias Gaertner wrote:
> > On Sat, 01 Oct 2011 08:39:42 +0100
> > Martin<lazarus at mfriebe.de> wrote:
> >
> >> On 01/10/2011 07:53, Mattias Gaertner wrote:
> >>> On Sat, 01 Oct 2011 03:04:56 +0200
> >>> Hans-Peter Diettrich<DrDiettrich1 at aol.com> wrote:
> >>>
> >>>> I don't understand the logic behind TControl.Click:
> >>>>
> >>>> procedure TControl.Click;
> >>>> begin
> >>>> //DebugLn(['TControl.Click ',DbgSName(Self)]);
> >>>> if (not (csDesigning in ComponentState)) and (ActionLink<> nil) and
> >>>> ((Action=nil) or (@FOnClick<> @Action.OnExecute) or
> >>>> Assigned(FOnClick)) then
> >>>> ActionLink.Execute(Self)
> >>>> else
> >>>> if Assigned(FOnClick) then
> >>>> FOnClick(Self);
> >>>> end;
> >>>>
> >>>>
> >> Maybe I overlook something, but
> >> @FOnClick is the address of the variable holding the method reference
> >> (or nil)
> >> so is @Action.OnExecute
> >>
> >> So when can they ever be equal?
> > You are right.
> ...
> > I added a CompareMem.
> >> Also is that supposed to be a shortcut, saving the call, or is that
> >> indeed supposed to modify behaviour?
> > Good question.
> > I guess it would be enough to check (not (csDesigning in
> > ComponentState)) and (ActionLink<> nil).
> >
> > Maybe the Delphi docs have an answer.
> >
>
> further more:
>
> ActionLink.Execute is virtual
>
> So comparing with the OnExecute method pointer is at the very least
> insufficient.
>
> If ActionLink.Execute is overridden, it could call/do anything.
True. But it seems Delphi does the same.
> I would suggest to drop that check entirely
Why?
Do you have a real case where it hurts?
> SVN Blame shows that it's been there for a long time, and always had the
> @FOnClick => so it never triggered in the past, and there never was a
> bug, while it did not trigger.
Well, this allows many conclusions. ;)
Mattias
More information about the Lazarus
mailing list