我用一个procedure动态生成了一个控件数组,现在需要编写这个控件数组中控件的事件,该怎么写啊?
解决方案 »
- 很郁闷的问题
- 简单数据库操作问题
- 用存储过程插入记录,为什么插入的汉字到数据库里都少了一半(8个字只有4个字进数据库)
- 照着李维的《高效数据库编程》抄代码,遇到错误过不去,请帮助
- 关于Canvas的问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 关于、《Delphi 5 开发人员指南》
- 打印布局设置(横向和纵向)
- f1book6.1为什么在delphi6里装不上?(编译不过去)
- 求SQL SERVER中,DELETE,UPDATE,INSERT的触发器脚本,在线急等!
- 简单的update 语句,总是提示说语法错误,高手指点之,多谢
- 今天看VB出现了这个#1,#2...不知是什么意思??可否麻烦一下
- 考勤系统中如何处理排班,使得系统比较通用。
TMainForm = class(TForm)
private
a: array[0..6] of TButton;
procedure ButtonClick(Sender: TObject);
public
procedure CreateButton;
end;..procedure TMainForm.CreateButton;
var
i: Integer;
begin
for i := Low(a) to High(a) do
begin
a[i] := TButton.Create(Self);
a[i].OnClick := ButttonClick;
end;
end;
1、声明控件数组。
var arr_btn:array of TButton;
2、创建控件。
SetLength(arr_btn,10);
For i:=0 to 9 do
begin
arr_btn[i] := TButton.Create(Form1);
With arr_btn[i] do
begin
Parent := Form1;
Top := ...;
Left := ...;
Width := ...;
Height := ...;
Caption := ...;
Visible := true;
OnClick := ButtonClickSimple;
Tag := i;
end;
end;
3、编写按钮的处理事件。
procedure TForm1.ButtonClickSimple(Sender: TObject);
var i:integer;
begin
i := TButton(sender).Tag;
Case i of
0: ......;
1: ......;
......
......
end;
end;
注意:这个过程需要在interface中声明。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;type
TForm1 = class(TForm)
BitBtn1: TBitBtn; procedure mycvb(Sender: TObject) ;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);
var
bb:TButton;
begin
bb:= Tbutton.Create(self);
with bb do
begin
Parent:=Form1;
Left:=100;
Top:=100;
Caption:='New Button';
onclick:= mycvb
end;
end;procedure TForm1.mycvb(Sender: TObject);
begin
ShowMessage('ok');
end;end.
var
ComArrray:array [1..10] of TPicture;
i:integer;
begin
for i:=1 to 10 do
begin
ComArrray[i]:=TPicture.Create(self);
ComArrray.Parent:=self;
ComArrray.Left:=50;
ComArrray.Top:=10*i;
ComArrray.OnClick:=OnClick;
ComArrray.Visible:=true;
ComArrray[i].caption:='动态图片'+inttostr(i);
end;
end;