Mattias Gaertner schrieb:
On Sat, 01 Oct 2011 03:04:56 +0200
Hans-Peter Diettrich <[email protected]> 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;

This IMO will invoke ActionLink.Execute if (a different) FOnClick is assigned - so far okay. But FOnClick will *not* be invoked then (even if different), and it will be invoked *always* in design state.

Is it really okay to invoke an user-supplied OnClick handler in design state?

No.

Then the question remains, why Action hides the OnClick handler, at runtime? Is this required by Delphi compatibility?


I also wonder what's the difference or relationship between Action and ActionLink - can somebody explain? Does ActionLink (when assigned) take precedence over Action?

See TControl.GetAction.

Thanks for the hint :-)

DoDi


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to