菜鸟的超级小问题!绝对容易拿分!高手千万不要鄙视哦!!! ( 积分: 33 )

  • 主题发起人 主题发起人 lmk
  • 开始时间 开始时间
L

lmk

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在在form上放了2个button,现在当我点击button1的时候,在form上动态生成3个edit控件,现在我向3个edit中分别输入数值,输入完毕之后当我点击button2的时候会把第一个edit中的数值showmessage出来!超级小问题吧!但小弟不会做啊!把所有的分都拿出来了!希望高手门帮帮我这个菜鸟吧
 
我现在在form上放了2个button,现在当我点击button1的时候,在form上动态生成3个edit控件,现在我向3个edit中分别输入数值,输入完毕之后当我点击button2的时候会把第一个edit中的数值showmessage出来!超级小问题吧!但小弟不会做啊!把所有的分都拿出来了!希望高手门帮帮我这个菜鸟吧
 
先定义三个 Edit1: TEdit;Edit2: TEdit;Edit3: TEdit; 变量,然后创建

Edit1:= TEdit.create(self);
edit1.Parent := form1;
三个一样,位置自己定义
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(edit1.Text);
end;
 
implementation
var
ArrEdit: array[0..2] of TEdit;
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i := 0 to 2 do
begin
ArrEdit := TEdit.Create(nil);
ArrEdit.Parent := self;
ArrEdit.Name := 'Edit'+ IntToStr(i+1);
ArrEdit.Left := i * ArrEdit.Width;
ArrEdit.Visible := True;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(ArrEdit[0].Text);
end;

end.
 
to【清风】:你是说把edit1,edit2,edit3定义成全局变量吗?如果我要生成的edit的数量不确定!有可能是几个,也有可能是十几个的话!那样的话提前定义好象不行啊!麻烦在帮我想想办法啊!小弟感激不尽!
 
btn1
for I := 1 to 3 do // Iterate
with TEdit.Create(self) do
begin
Visible:=true;
Parent :=self;
left:=10 ;
top:=10+i*30;
name:='edit'+inttostr(i);
// edit1.Text:=text;
end; // with
end;
btn2
showmessage(tedit(FindComponent('edit1')).Text )
 
我现在做的是这样一个事情,我的窗口上有一个combobox我现在要根据combobox中选择的项来确定我要生成的edit的数量,有的是一个,有的是二个,还有的是没有!而且如果要更换选择了,还要把先前生成的edit给free掉!麻烦2位在帮我看看啊
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ComboBox1: TComboBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
EditCount: Integer;
implementation
var
ArrEdit: array of TEdit;
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
SetLength(ArrEdit, EditCount);
for i := Low(ArrEdit) to High(ArrEdit) do
begin
ArrEdit := TEdit.Create(nil);
ArrEdit.Parent := self;
ArrEdit.Name := 'Edit'+ IntToStr(i + 1);
ArrEdit.Left := i * ArrEdit.Width;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(ArrEdit[0].Text);
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
i: Integer;
begin
for i := Low(ArrEdit) to High(ArrEdit) do
begin
ArrEdit.Free;
end;
EditCount := StrToInt(ComboBox1.Items[ComboBox1.ItemIndex]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
EditCount := 0;
end;

end.
 
恩!“勇者”和“ak_2005”的方法可以实现!谢谢各位了,不好意思,小弟就这么多分了!各位不要嫌少哦!下次一顶补上!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部