On Mon, 23 May 2011 20:02:42 -0400 Jose Luis <jlvo...@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<jlvo...@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 -- _______________________________________________ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus