那位高手能帮我编写个程序,动态生成20个编辑框,然后分别给对应的程序动态赋值!
解决方案 »
- 与各位程序员共同分享,一个女生写的程序(爆笑)
- 为什么imageList不生效?
- 高难度挑战问题(Api,windows底层,屏幕取字,IE)
- 出现以下错误是怎么回事?[Error] picture.pas(85): Incompatible types: 'Graphics.TCanvas' and 'QGraphics.TCanvas'
- DELPHI 和 excel的日期格式转换
- 谢谢!!!tadotable连接一个表后,怎样取得此表的colum的数量和每个的名字?
- 怎样获得主板序列号???
- 在数据库中,如何得到当前记录指针所在位置,并如何转换成数字型.
- 急急急!快救救我吧!打开文件时,出现IO错误???(错误号183)。是什么原因啊???
- 建一个公共删除按钮,当激活ADOTable6时,可以删除ADOTable6的记录;当激活ADOQuery25时,可以删除ADOQuery25的记录.....等等,应怎样设置?
- DBGridEh刷新后再定位问题
- delphi导入速度
var
i:integer;
begin
for i := 0 to Self.ControlCount - 1 do
begin
if Self.Controls[i] is TEdit then
TEdit(Self.Controls[i]).Text := 'abc';
end;
end;
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject); private
{ Private declarations }
procedure MyEditClick(Sender: TObject);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
Var
MyEdit : Array of TEdit;
i,j,k: Integer;
begin
SetLength(MyEdit,12); '设置动态长度12
for i := 0 to 11 do
begin
MyEdit[i] := TEdit.Create(Self);
MyEdit[i].Width := 130;
MyEdit[i].Height:= 80;
MyEdit[i].Parent:=self;
MyEdit[i].Text:=inttostr(i); '赋值
MyEdit[i].OnClick := MyEditClick; '定义动态事件
j:=Trunc(i/2); //取整 行 设置为2列,要改5列对应3个2都改变为5
K:=i mod 2 ; //取余 列
if i<2 then
begin
MyEdit[i].Top:=10;
MyEdit[i].Left:=30+i*150;
end else
begin
MyEdit[i].Top:=10+30*j;
MyEdit[i].Left:=30+k*150;
end;
end;
end;
procedure TForm1.MyEditClick(Sender: TObject);
var
i:integer;
begin
for i := 0 to Self.ControlCount - 1 do
begin
if Self.Controls[i] is TEdit then
TEdit(Self.Controls[i]).Text :='abc'+inttostr(i);
end;
end;
end.
procedure TForm1.createEdit(Count: Integer);
var
I: Integer;
begin
for I := 0 to Count - 1 do
with TEdit.Create(self) do
begin
parent := self; //创建的TEdit显示在当前窗口上
//根据需要设置Left和top值
left := 位置值;
top := 位置值;
tag := 100 + I; //新创建TEdit的Tag值与自动创建的TEdit区别一下,Tag属性值从100开始
end;
end;//根据ATag值获取动态生成的TEdit;
function TForm1.getEdit(ATag: Integer): TEdit;
var
I: Integer;
AEdit: TEdit;
begin
Result := nil; for I := 0 to ControlCount - 1 do
if Controls[I] is TEdit then
begin
AEdit := Contols[I] as TEdit;
if AEdit.Tag = 100 + ATag then
begin
Result := AEdit;
Break;
end;
end;
end;//获取TEdit
{
var
AEdit: TEdit;
begin
AEdit := getEdit(0); //获取第1个动态创建的TEdit;
//AEdit := getEdit(19); //获取第19个动态创建的TEdit;
end;
}
private
...
FEditControls: TStringList;
...
public
...
end;
//动态创建TEdit;procedure TForm1.CreateEdit(ACount: Integer);
var
I: Integer;
AEdit: TEdit;
begin
for I := 0 to ACount - 1 do
begin
AEdit := TEdit.Create(Self);
with AEdit do
begin
parent := self;
Left := 值;
top := 值;
end;
FEditControls.AddObject(IntToStr(I), AEdit);
end;
end;//获取TEdit
function getEdit(Index: Integer): TEdit;
begin
Result := nil;
if (Index < 0) or (Index >= FEditControls.Count) then exit;
Result := FEditControls.Object[Index] as TEdit;
end;//获取TEdit
{
var
AEdit: TEdit;
begin
AEdit := getEdit(0); //获取第1个动态创建的TEdit;
//AEdit := getEdit(19); //获取第19个动态创建的TEdit;
end;
}
private
...
FEditControls: TObjectList;
...
public
...
end;
procedure TForm1.CreateEdit(ACount: Integer);
var
I: Integer;
AEdit: TEdit;
begin
for I := 0 to ACount - 1 do
begin
AEdit := TEdit.Create(Self);
with AEdit do
begin
parent := self;
Left := 值;
top := 值;
end;
FEditControls.Add(AEdit);
end;
end;
//获取TEdit
function getEdit(Index: Integer): TEdit;
begin
Result := nil;
if (Index < 0) or (Index >= FEditControls.Count) then exit;
Result := FEditControls.Items[Index] as TEdit;
end;//获取TEdit
{
var
AEdit: TEdit;
begin
AEdit := getEdit(0); //获取第1个动态创建的TEdit;
//AEdit := getEdit(19); //获取第19个动态创建的TEdit;
end;
}
TEditArray = array of TEdit;在窗口类的private段下面定义一个私有属性
private
...
FEditArray: TEditArray;
...
public
...
end;
procedure TForm1.CreateEdit(ACount: Integer);
var
I: Integer;
AEdit: TEdit;
begin
SetLength(FEditArray, ACount); //设置动态数组大小 for I := 0 to ACount - 1 do
begin
AEdit := TEdit.Create(Self);
with AEdit do
begin
parent := self;
Left := 值;
top := 值;
end;
FEditArray[I] := AEdit;
end;
end;//获取TEdit
function getEdit(Index: Integer): TEdit;
begin
Result := nil;
if (Index < Low(FEditArray)) or (Index > High(FEditArray)) then exit;
Result := FEditArray[Index];
end;//获取TEdit
{
var
AEdit: TEdit;
begin
AEdit := getEdit(0); //获取第1个动态创建的TEdit;
//AEdit := getEdit(19); //获取第19个动态创建的TEdit;
end;
}
这么多方法本质上其实一样,不同的是标识Edit序列的方法有所区别
2. 为Edit生成唯一的名字,通过FindComponent来找Edit
procedure TForm1.MyEditClick(Sender: TObject);
var
i:integer;
begin
for i := 0 to Self.ControlCount - 1 do
begin
if Self.Controls[i] is TEdit then
TEdit(Self.Controls[i]).Text :='abc'+inttostr(i);
end;
end;
因为我又定义了个单击事件,单击后单元的值变为有'abc'了,你也可以不要
或
使用arr:array [1..20] of Tedit;自动创建时arr[i]:=Tedit.create(self);...