???????如果单纯的只是这样,假设我的
copy('edit1',4,1);
copy('edit1',1,4);你可能想问的不是这个吧?
for i:=0 to 20
begin
if findcomponent('edit'+inttostr(i)) then
showmessage('find it');
end;
copy('edit1',4,1);
copy('edit1',1,4);你可能想问的不是这个吧?
for i:=0 to 20
begin
if findcomponent('edit'+inttostr(i)) then
showmessage('find it');
end;
var
CName:string;
CName:=Edit1.name;
CName:=Copy(CName,Length(CName)-1,1);
我建立了3个BUtton OnClick过程上都是 Button3Click
Copy(t,7,Length(t)-6) 这个做拆分这样解决了 Button18
如果 按楼上的Copy(CName,Length(CName)-1,1);这样 是不能拆的
}procedure TForm1.Button3Click(Sender: TObject);
var
t:string;
begin
t:=TButton(Sender).Name;
t:=Copy(t,7,Length(t)-6);
showMessage(t);
end;
是动态生成呀! black_fox(black_fox) 怎么没有意义了?
我设计了一个游戏大厅程序,桌子和就是用动态生成的!
*)var
Edit:TEdit;
I:integer;
begin
for I:=0 to 10 do begin
Edit:=TEdit.Create(self);
Edit.Parent:=self;//需要注意的部分!
Edit.Name:='Edit'+IntToStr(I);
Edit.Top:=I*Edit.Height;
Edit.Left:=0;
{加其他属性}
end;{-for}
end;{-begin}
可以用以下这种方式来管理。VAR
Form1 : TForm1;
AllControl : Tlist;IMPLEMENTATION{$R *.DFM}PROCEDURE TForm1.FormCreate(Sender: TObject);
BEGIN
AllControl :=Tlist.create();
END;PROCEDURE TForm1.FormDestroy(Sender: TObject);
BEGIN
AllControl.free();
END;PROCEDURE TForm1.BitBtn1Click(Sender: TObject);
VAR
index : integer;
BEGIN
index := Allcontrol.Add(tButton.Create(self));
WITH Tbutton(AllControl.Items[index]) DO
BEGIN
caption := Format('测试%d', [index]);
parent := self;
left := 0;
top := 50 * index + 10;
width := 50;
height := 50;
tag := index;
onClick := self.ButtonClick; //事件处理
visible := true;
END;END;PROCEDURE TForm1.ButtonClick(Sender: TObject);
BEGIN
showmessage(Format('你点的是%d', [(sender AS Tbutton).tag]))
END;END.如果要修改第一个创建的Button的caption为'test'
可以通过((Allcontrol.items[0]) as Tbutton).caption:='test';