Note to self: "read questions more thoroughly in future". :-[ Walter Prins wrote:
>----- Original Message ----- >From: "Dave Sellers" <[EMAIL PROTECTED]> >To: <[email protected]> >Sent: Monday, May 02, 2005 11:19 AM >Subject: [list] Re: [delphi-en] Creating/adding GroupBox at runtime > > > > >>You'll need to manually assign event handlers to relevant events: >> >>GBx.OnMouseDown := MyMouseDownEventHandler; >> >> > >Actually in this case that's probably not what you want/should do, as the >question example given declares a descendant from TGroupbox, and thus, one >should really be overriding the appropriate method (and not be assigning to >event handler properties.) In the example code the Reintroduce keyword is >used (and there's no override keyword in sight) - this is the key problem. >The code should not use reintroduce and should use override. > >Simple working example code would be (create a new project and replace >unit1.pas's source with this): > >unit Unit1; > >interface > >uses > Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, > Dialogs, StdCtrls; > >type > TGbx = class(TGroupBox) > protected > { This method was identified by looking at StdCtrls.pas and >Controls.pas, tracing up the TGroupbox inehritance hierarchy to see which >method to override } > procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: >Integer); override; > end; > TForm1 = class(TForm) > procedure FormCreate(Sender: TObject); > private > { Private declarations } > FGbx : TGBx; > public > { Public declarations } > end; > >var > Form1: TForm1; > >implementation > >{$R *.dfm} > >{ TGbx } > >procedure TGbx.MouseDown(Button: TMouseButton; Shift: TShiftState; X, > Y: Integer); >begin > { call inherited MouseDown method, that checks for assigned "OnMouseDown" >and fires if needed.} > inherited; > > { now add our own mousedown behaviour } > ShowMessage('boo'); > > { you can of course change this whichever way you want (not call inherited >for example, only call it sometimes etc etc) } >end; > >procedure TForm1.FormCreate(Sender: TObject); >begin > FGbx := TGbx.Create(self); > FGbx.Parent := self; >end; > >end. > > > >Regards > >Walter > > > > >----------------------------------------------------- >Home page: http://groups.yahoo.com/group/delphi-en/ >To unsubscribe: [EMAIL PROTECTED] >Yahoo! Groups Links > > > > > > > > > > > ----------------------------------------------------- Home page: http://groups.yahoo.com/group/delphi-en/ To unsubscribe: [EMAIL PROTECTED] Yahoo! Groups Links <*> To visit your group on the web, go to: http://groups.yahoo.com/group/delphi-en/ <*> To unsubscribe from this group, send an email to: [EMAIL PROTECTED] <*> Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/

