如何动态创建多个组件(100分)

  • 主题发起人 主题发起人 SiWeiLiuLang
  • 开始时间 开始时间
S

SiWeiLiuLang

Unregistered / Unconfirmed
GUEST, unregistred user!
组件的个数不定。
组件命名以数组形式。
组件之间有特定的间隔。
请以Edit组件为例。
 
Edit1:=TEdit.Create(nil);
Edit2:=TEdit.Create(nil);
...
 
//声明组件数组的个数
//估计一下大概要用多少个,设一个上限,使用时判断一下
//本人也是刚学delphi,所以没有多少技术含量
Editx:array[1..10] of TEdit;
在OnShow里
for i:=1 to 10do
begin
Editx:=TEdit.Create(Application);
Editx.parent:=self;
end;
间隔位置可用:
for i:=1 to 10do
begin
Editx.Top:=xxxx;
Editx.left:=xxxx;
Editx.width:=xxxx;
Editx.height:=xxxx;
end;
xxxx可以是一个常数,也可以是一个以i有关的变量
 
var
Edit: array[1..10] of TEdit;
i : integer;
begin
for i := 1 to Length(Edit)do
begin
Edit := TEdit.Create(self);
Edit.Parent := self;
Edit.Text := 'Edit' + IntToStr(i);
Edit.Left := 300;
if i = 1 then
Edit.Top := 10
else
Edit.Top := Edit[i - 1].Top + Edit[i - 1].Height + 5;
end;
end;
 
呵呵,楼上的基本都可以,只是这句Edit.Text := 'Edit' + IntToStr(i);
最好改成Edit.Name := 'Edit' + IntToStr(i);
 
上面的高手,问一个问题:
假如在这样的情况下建了一个Edit
我想用Onchange函数,那改怎样声明,在什么地方声明啊?
Edit.Onchange()
begin
XXXXX;
end;
 
你想用Onchange做什么事?如果简单的话可以直接用Edit.Perform(Msg, 0, 0)的方法
 
我做一个统计,根据不同的Edit输入动态的显示目前的选择需要多少钱..
类似于网页编程里的Ajax的效果..
Onchange会关联到一个统计的函数,所有的Onchange都是调用该函数
 
type
TForm1 = class(TForm)
edt1: TEdit;
procedure edtCommonChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

procedure TForm1.edtCommonChange(Sender: TObject);
begin
// ....
end;

然后使用下面的代码 :
Edit.Onchange := edtCommonChange;
 
后退
顶部