不太明白你的意思.你想做什么?是不是想给这个BUTTON+CLICK事件?? 如果是的话.请参考: FORM1 .... PRIVATE procedure BtnCLick(Sender:TObject); begin // do anything you want. end; ................ BitBtn1:=TBitbtn.Create(Form1); BitBtn1.OnCLick:=BtnCLick; .............///that's all
procedure TFrm_man.FormCreate(Sender: TObject); VAR i:integer; begin for i:=1 to Qroom.RecordCount do begin tag1:=inttostr(trim(Qroom.fieldbyname('roomname').asstring)); createbutton(tag1); end; end;procedure Tfrm_main.createbutton(tag1:integer); var bitbtn1:Tbitbtn; begin bitbtn1:=Tbitbtn.Create(frm_main); bitbtn1.Parent:=frm_main; bitbtn1.Tag:=tag1; bitbtn1.OnClick:=emptyclick; end;procedure Tfrm_lead.emptyclick(Sender:TObject); begin if datamodule1.Qroom.Locate('roomno',tag1,[]) then begin roomname_open:=datamodule1.Qroom.FieldByName('roomname').asstring; end; datamodule1.Qroom.Close; Frm_main.Hide; frm_empty.show; end;每次的roomname_open都是Qroom表中的最后一条记录,我想读取的是不同的,我指定的该BUTTON的TAG不同的值,用什么方法?
晕,要真的需要,试试下面的onclick方法吧 Procedure Btnclick(Sender:TObject); //当事件被触发时,sender是指向事件的触发来源(也就是那个被click的按钮) begin showmessage(inttostr(TBitbtn(Sender).tag); //强制认定sender的类型为TBitbtn end ; ...其他不变
你试试这个: ==================================== unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure myBnt1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject); var btn1:TButton; begin btn1:=TButton.Create(Self); with btn1 do begin Parent:=Self; Top:=50; Left:=120; Width:=80; Height:=35; Caption:='动态控件'; onClick:=myBnt1Click; end; end;procedure Tform1.myBnt1Click(Sender: TObject); begin if MessageDlgPos('btn1是动态生成的控件,单击事件已经触发' +#10+'是否要退出?',mtConfirmation, [mbYes, mbNo], 0,400,350) = mrYes then begin MessageDlg(退出单击事件', mtInformation, [mbOk], 0); Close; end; end;end.
procedure Tfrm_lead.emptyclick(Sender:TObject); begin if datamodule1.Qroom.Locate('roomno',Tbitbtn(Sender).tag,[]) then begin roomname_open:=datamodule1.Qroom.FieldByName('roomname').asstring; end; datamodule1.Qroom.Close; Frm_main.Hide; frm_empty.show; end;
如果是的话.请参考:
FORM1
....
PRIVATE
procedure BtnCLick(Sender:TObject);
begin
// do anything you want.
end;
................
BitBtn1:=TBitbtn.Create(Form1);
BitBtn1.OnCLick:=BtnCLick;
.............///that's all
在bitbtn1:=Tbitbtn.Create(form1);
bitbtn1.onclick:=myclick;
BITBTN.PARENT:=FORM1;//或者其他容器类组建..
在FOR语句中调用CREATEBUTTON事件生成N个BUTTON,用楼上的方法,在它的ONCLICK事件中,所有的BUTTON都是同一个TAG值,都是最后一个BUTTON的TAG值,我想知道用什么办法可以读出各个BUTTOM的各不相同的TAG值!
VAR i:integer;
begin
for i:=1 to Qroom.RecordCount do
begin
tag1:=inttostr(trim(Qroom.fieldbyname('roomname').asstring));
createbutton(tag1);
end;
end;procedure Tfrm_main.createbutton(tag1:integer);
var
bitbtn1:Tbitbtn;
begin
bitbtn1:=Tbitbtn.Create(frm_main);
bitbtn1.Parent:=frm_main;
bitbtn1.Tag:=tag1;
bitbtn1.OnClick:=emptyclick;
end;procedure Tfrm_lead.emptyclick(Sender:TObject);
begin
if datamodule1.Qroom.Locate('roomno',tag1,[]) then
begin
roomname_open:=datamodule1.Qroom.FieldByName('roomname').asstring;
end;
datamodule1.Qroom.Close;
Frm_main.Hide;
frm_empty.show;
end;每次的roomname_open都是Qroom表中的最后一条记录,我想读取的是不同的,我指定的该BUTTON的TAG不同的值,用什么方法?
Procedure Btnclick(Sender:TObject); //当事件被触发时,sender是指向事件的触发来源(也就是那个被click的按钮)
begin
showmessage(inttostr(TBitbtn(Sender).tag); //强制认定sender的类型为TBitbtn
end ;
...其他不变
====================================
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure myBnt1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
btn1:TButton;
begin
btn1:=TButton.Create(Self);
with btn1 do
begin
Parent:=Self;
Top:=50;
Left:=120;
Width:=80;
Height:=35;
Caption:='动态控件';
onClick:=myBnt1Click;
end;
end;procedure Tform1.myBnt1Click(Sender: TObject);
begin
if MessageDlgPos('btn1是动态生成的控件,单击事件已经触发'
+#10+'是否要退出?',mtConfirmation, [mbYes, mbNo],
0,400,350) = mrYes then
begin
MessageDlg(退出单击事件', mtInformation,
[mbOk], 0);
Close;
end;
end;end.
begin
if datamodule1.Qroom.Locate('roomno',Tbitbtn(Sender).tag,[]) then
begin
roomname_open:=datamodule1.Qroom.FieldByName('roomname').asstring;
end;
datamodule1.Qroom.Close;
Frm_main.Hide;
frm_empty.show;
end;