while Success(CreateEdit()) { WaitInput; } Messagebox(0,"Report: System sources have been exhausted","Congratulation",0) 以上代码与问题无关,请勿联想,如有冒犯,实属巧合...前面的不是都答了吗???具体就是把他们合并在一起
还有一个问题,就创建的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;
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;
问题已经解决!!!!!!!!!!!!!! //声明两个变量'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;
var
MyButton : TButton;
begin
MyButton :=TButton.Create(self);
MyButton.Caption :='11111' ;
MyButton.Parent := Form1 ; //按钮的父窗体
end;按钮的位置自己调整吧
var
MyEdit : TEdit;
begin
MyEdit :=TEdit.Create(self);
MyEdit.Parent := Form1 ; //按钮的父窗体
MyEdit.Left := XX;
MyEdit.Top := XX;
end;
{
WaitInput;
}
Messagebox(0,"Report: System sources have been exhausted","Congratulation",0)
以上代码与问题无关,请勿联想,如有冒犯,实属巧合...前面的不是都答了吗???具体就是把他们合并在一起
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;
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;
//声明两个变量'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;