Dynamically Allocated Components

Hello...I'm new to Delphi and am developing a database application. My application requires a certian genericity for my future benifit. So as I read in a column from my database I procedurally allocate the needed number of buttons and the title them. As of now, I have figured out how to do this! (After alot of playing!)

However, now those buttons need to be click-able. I can access there properties and edit them. But I can't seem to figure out how to handle their events. I thought possibly It was simply a scope problem, being that the buttons were created locally within a procedure call. But I attempted to initialize them globally, and still had no success.  I was hoping someone could shed some light on the subject for me. Due to my limited programing experience, any code segments would be wonderful!
If it helps any...here is how I created my buttons within the procedure:

Bn1 := TButton.Create(Self);
Bn1.Parent := Self;
//then set my properties.

Possibly I'm setting this up wrong?

Thanks in Advance.
mcdonluAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
intheConnect With a Mentor Commented:
hi,
this was for a menu created at runtime but the same aplies for a button and other components you just need to set the OnClick property of Item to a TNotifyEvent. For instance:
 
{public}
Procedure TMyForm.ClickItem(Sender:TObject);

......
implementation


//event handler
   
Procedure TMyForm.ClickItem(Sender:TObject);
begin
showmessage('menu item clicked');
end;


var item:TMenuItem;
begin
item:=TmenuItem.create(nil);
item.caption='test';
Item.OnClick := ClickItem;
form1.new1.add(item);


happy programming if you need more help just ask.
Regards Barry
0
 
intheCommented:
proper example:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Procedure ClickItem(Sender:TObject);

  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

Procedure TForm1.ClickItem(Sender:TObject);
begin
showmessage('NewButton clicked');
end;

Procedure TForm1.Button1Click(Sender: TObject);
var
 NewButton : TButton;
begin
NewButton := TButton.create(nil);
with NewButton do begin
Parent := Form1;
Caption :='Click me';
OnClick := ClickItem; {<-here is imporatnt bit}
left := 40;
top := 100;
width := 60;
height := 20;
end;
NewButton.SHow;

end;

end.
0
All Courses

From novice to tech pro — start learning today.