[Lazarus] Class operators
Jose Luis
jlvolta at fibertel.com.py
Tue May 24 13:55:59 CEST 2011
On Tue, 2011-05-24 at 09:45 +0200, Mattias Gaertner wrote:
> On Mon, 23 May 2011 20:02:42 -0400
> Jose Luis <jlvolta at fibertel.com.py> wrote:
>
> > On Tue, 2011-05-24 at 00:35 +0100, Martin wrote:
> > > On 24/05/2011 00:17, Jose Luis wrote:
> > > > On Tue, 2011-05-24 at 00:30 +0200, Mattias Gaertner wrote:
> > > >> On Mon, 23 May 2011 18:06:31 -0400
> > > >> Jose Luis<jlvolta at fibertel.com.py> wrote:
> > > >>
> > > >>> Hi all:
> > > >>>
> > > >>> I've tried to cast the argument 'Sender' from a call to an event
> > > >>> procedure, but it didn't work. The event is triggered by a TSpeedButton
> > > >>> push, and the code of the action call contain the sentence:
> > > >>>
> > > >>> -- if Sender is TSpeedButton then
> > > >>> -- buttn:=TSpeedButton(Sender);
> > > >>>
> > > >>> The code compile without raising error or warning, but at run-time
> > > >>> Sender is not of TSpeedButton's type, like it is in Delphi.
> > > >>
> > > ....
> > > > procedure TAyDForm.ButtnBHExecute(Sender: TObject);
> > > > var buttn:TSpeedButton;
> > > > indBtn: integer;
> > > > CanChange: boolean;
> > > > begin
> > > > if (Sender is TSpeedButton) then
> > >
> > > Set a breakpoint, and when the execution stops at it evaluate (ctrl-f7
> > > or watch window) the following
> > > (^^PChar(Sender)^+3)^+1
> > >
> > > It should give you the real classname
> > >
> > >
> > Hi Martin, thank you for your email;
> >
> > The watch window says the value of Sender is:
> > 0x8327251 'TAction' #148
> >
> > What does this mean ?, it was a SpeedButton that triggered the action,
> > but I received a TAction object.
>
> I guess you can use
> if (Sender is TAction) and (TAction(Sender).ActionComponent is
> TSpeedbutton) then
> begin
> Btn:=TSpeedButton(TAction(Sender).ActionComponent);
>
> Mattias
>
> --
Hi, Mattias, and thank you, it works fine !
Indeed, this help me to understand how I can use the Action property of
an object.
Best regards,
J.L.
> ______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
>
More information about the Lazarus
mailing list