----- 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
<*> 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/