--- In [email protected], "Walter Prins" <[EMAIL PROTECTED]> 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
Ok, thanks you people for the reply ... i've tried this code, adding some code and a button to create the groupbox at runtime : var ... MyGBx : TGbx; procedure TForm1.Button1Click(Sender: TObject); begin MyGBx := TGbx.Create(Form1); MyGBx.Caption := 'My GroupBox'; MyGBx.Visible := True; MyGBx.Show; MyGBx.top := 100; MyGBx.left := 100; end; ... but i dont see any groupbox on the form ... aaahhhh ... where i go wrong ? ----------------------------------------------------- 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/

