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



Reply via email to