当在edit输入文字,就(用代码)创建一个相同的edit,当再在这个edit中输入文字时,再创建一个edit 以此往复。(或者用控件数组,预先规定要创建的edit的个数,比如60个),以上如何用代码实现????????????预先 谢谢 所有看帖的朋友! 谢谢!!

解决方案 »

  1.   

    procedure TForm1.Edit1Change(Sender: TObject);
    var
          MyButton   :   TButton;
    begin
          MyButton   :=TButton.Create(self);
          MyButton.Caption   :='11111' ;
          MyButton.Parent   :=   Form1   ;   //按钮的父窗体
    end;按钮的位置自己调整吧
      

  2.   

    procedure TForm1.Edit1Change(Sender: TObject);
    var
          MyEdit  :  TEdit;
    begin
          MyEdit  :=TEdit.Create(self);
          MyEdit.Parent  :=  Form1  ;  //按钮的父窗体
          MyEdit.Left := XX; 
          MyEdit.Top := XX;
    end; 
      

  3.   

    不是,我的意思是 当在edit1输入文字,就(用代码)创建一个相同的edit2,然后当在新建(就是用代码创建)的edit2中输入文字时,再创建一个edit3, 以此往复。(或者用控件数组,预先规定要创建的edit的个数,比如60个),以上如何用代码实现???????????? 
      

  4.   

    MyEdit.Change:=Form1.onchange.定义一个事件。
      

  5.   

    while Success(CreateEdit())
    {
       WaitInput;
    }
    Messagebox(0,"Report: System sources have been exhausted","Congratulation",0)
    以上代码与问题无关,请勿联想,如有冒犯,实属巧合...前面的不是都答了吗???具体就是把他们合并在一起
      

  6.   

    还有一个问题,就创建的edit的位置全都重叠了,这是我的代码:var
      edt : TEdit;procedure TForm6.EdtCreateChange(Sender: TObject);  //新创建的“edt”都重叠了!!!
    begin
            edt := TEdit.Create(Self);//
            with edt do begin        // 这个edt是要新创建的控件
              Parent := self;
              top := edit1.Top;                        //
                  left := edt.Left + edt.Width;       // 应该是一个挨着一个的,可是全都重叠了! 这里的edt指的是前一个TEdit控件!
              height := edit1.Height;                // 
              width := edit1.Width;                 //
              font := edit1.Font;                  //
              Visible := true;                    //
              SetFocus;                          //
              OnChange := form6.EdtCreateChange;//
            end;
    end;procedure TForm6.Edit1Change(Sender: TObject); // edit1是用控件创建的
    begin
      if Length(edit1.Text) = 1 then
      begin
        edt := TEdit.Create(Self);
        with edt do begin
          tag := 0;
          Parent := self;
          top := edit1.Top;
          left := edit1.Left+edit1.Width;
          height := edit1.Height;
          width := edit1.Width;
          font := edit1.Font;
          Visible := true;
          SetFocus;
          OnChange := Form6.EdtCreateChange;
        end;
      end;
      

  7.   

    var 
      edt, OldEdt : TEdit; 
      
    procedure TForm6.EdtCreateChange(Sender: TObject);  //新创建的“edt”都重叠了!!! 
    begin 
            edt := TEdit.Create(Self);// 
            with edt do begin        // 这个edt是要新创建的控件 
              Parent := self; 
              top := edit1.Top;                        // 
                  left := edt.Left + edt.Width;      // 你这里的edt不是前一个edt了,而是新创建的edt
             把上面一行改成:
             Left := OldEdt.Left + OldEdt.Width;
             OldEdt := edt;

              height := edit1.Height;                // 
              width := edit1.Width;                // 
              font := edit1.Font;                  // 
              Visible := true;                    // 
              SetFocus;                          // 
              OnChange := form6.EdtCreateChange;// 
            end; 
    end; procedure TForm6.Edit1Change(Sender: TObject); // edit1是用控件创建的 
    begin 
      if Length(edit1.Text) = 1 then 
      begin 
        edt := TEdit.Create(Self); 
        with edt do begin 
          tag := 0; 
          Parent := self; 
          top := edit1.Top; 
          left := edit1.Left+edit1.Width; 
          OldEdt := edt;
          height := edit1.Height; 
          width := edit1.Width; 
          font := edit1.Font; 
          Visible := true; 
          SetFocus; 
          OnChange := Form6.EdtCreateChange; 
        end; 
      end; 
      

  8.   

    问题已经解决!!!!!!!!!!!!!!
    //声明两个变量'newedt', 'oldedt' 就可以解决控件位置重叠的问题。
    procedure TForm6.EdtCreateChange(Sender: TObject);  //
    begin 
            newedt := TEdit.Create(Self);// 
            with newedt do begin        // 这个edt是要新创建的控件 
              Parent := self; 
              top := oldedt.Top;                        // 
                  left := oldedt.Left + edt.Width;      // 应该是一个挨着一个的,
               height := oldedt.Height;                // 
              width := oldedt.Width;                // 
              font := oldedt.Font;                 // 
              Visible := true;                    // 
              SetFocus;                          // 
              OnChange := form6.EdtCreateChange;// 
               newedt :=  oldedt;      //这一步就是让控件不重叠的代码。
            end; 
    end;