我用以下方法在delphi中动态生成了10个edit控件。procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 1 to 10 do
    with TEdit.Create(Self) do
    begin
      Parent := Self;
      Top := I * 30;
      Left := I ;
      Name:='edit'+inttostr(I);
    end;
end;我在程序运行后往这些edit控件输入了值,
可不知如何获到这些动态生成的edit控件的值.这样出错 ,
procedure TForm1.Button2Click(Sender: TObject);
var str:string;
begin
str:=edit1.text;
end;报错: Undeclared identifier: 'edit1'谁能帮我解决一下,谢谢。

解决方案 »

  1.   

    没有定义指针咋行?
    用这个方法看看。
    var
      Edits: array[0..30] of TEdit;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      I: Integer;
    begin
      for I := 1 to 10 do
      begin
        Edits[i]:=TEdit.Create(self);
        with Edits[i] do
        begin
          Parent := self ;
          Top := I * 30;
          Left := I ;
          Name:='edit'+inttostr(I);
          Text := inttostr(I);
        end;
      end;
    end;
    procedure TForm1.Button2Click(Sender: TObject);
    var str:string;
    begin
    str:=Edits[1].text;
    end;
      

  2.   

    FList:TList;//定义在窗体的private
    在窗体的Create 事件中创建
     FList:=TList.Create;
    var 
      I: Integer;
      AEdit:TEdit;
    begin
      for I := 1 to 10 do
      begin
        AEdit:=TEdit.Create(Self);
        AEdit.Parent:=Self;
        AEdit.Left:=I;
        AEdit.Top:=I * 30;
        AEdit.Tag:=:=I;
        FList.Add(AEdit);
      end;
    //访问
      TEdit(FList.Items[1]).Text:='12341'; 
      

  3.   

    hhd85(hhd885)和ZyxIp(绝望中...) 都对,我顺便再问一下,这个生成的Edit如何响应keypress事件.我想让这些edit只能输入数字如何办?
      

  4.   

    我还问一下生成的Edit如何响应keypress事件.我想让这些edit只能输入数字如何办? 还有如果生成的是button,如何让它响应click事件,分少了点,我一定会给的,不好意思,再麻烦您一下.谢谢.
      

  5.   

    写一个过程,过程的格式你可以拖一个EDIT上去,然后在里面写一段代码。最后删除那个EDIT,把代码保留。
    procedure ...
    begin
      if Ord(key) < 48 or Ord(key)>57 then
      begin
        key := #0;
      end;
    end;然后写 edit名.OnKeyPress := 过程名;
      

  6.   

    hhd85兄弟的方法是可行的,
    而且比较简单