procedure TForm1.Button1Click(Sender: TObject);
begin
Form2:=TForm2.Create(self);
try
Form2.showModal;
Form3:=TForm3.Create(self);
try
SendMessage( Form2.Handle, WM_SETREDRAW, Integer(False), 0);
Form3.Align := alClient;
Form3.Parent := Form2;
Form3.Show ;
Form3.Close;
SendMessage(Form2.Handle, WM_SETREDRAW, Integer(True), 0);
finally
FreeAndNil(Form3);
end;
finally
FreeAndNil(Form2);
end;
end;
第二种办法
procedure TForm1.fcShapeBtn1Click(Sender: TObject);
begin
// Form2:=TForm2.Create(self);
// try
// Form2.showModal;
Form3:=TForm3.Create(self);
try
// SendMessage( Form2.Handle, WM_SETREDRAW, Integer(False), 0);
Form3.Align := alClient;
Form2:=TForm2.Create(self);
Form3.Parent := Form2;
Form3.Show ;
Form3.Close;
//SendMessage(Form2.Handle, WM_SETREDRAW, Integer(True), 0);
finally
FreeAndNil(Form3);
end;
// finally
// FreeAndNil(Form2);
// end;
end;
但两种都行不同 我的
目的:
在form1中有点击一个按钮,然后弹出Form2,在Form2弹出前弹出Form3 然后完成操作后点击Form3的一个按钮后退到Form2 ,操作再后退到Form1 。所作这个操作,代码必须在Form1中完成。
效果:让Form3覆盖在Form2上。看起来象只是一个form.
原因:不能在form2的Onshow中创建,原因是Form2是一个公共的查询窗体,我不能因为我一个人的复杂操作,改变公共窗体。在Form3中做一些判断返回一些结果来做我查询条件(这个有我来完成),复杂的是按顺序显示窗体。
有不明白的请留言,我将在线等待。
begin
Form2:=TForm2.Create(self);
try
Form2.showModal;
Form3:=TForm3.Create(self);
try
SendMessage( Form2.Handle, WM_SETREDRAW, Integer(False), 0);
Form3.Align := alClient;
Form3.Parent := Form2;
Form3.Show ;
Form3.Close;
SendMessage(Form2.Handle, WM_SETREDRAW, Integer(True), 0);
finally
FreeAndNil(Form3);
end;
finally
FreeAndNil(Form2);
end;
end;
第二种办法
procedure TForm1.fcShapeBtn1Click(Sender: TObject);
begin
// Form2:=TForm2.Create(self);
// try
// Form2.showModal;
Form3:=TForm3.Create(self);
try
// SendMessage( Form2.Handle, WM_SETREDRAW, Integer(False), 0);
Form3.Align := alClient;
Form2:=TForm2.Create(self);
Form3.Parent := Form2;
Form3.Show ;
Form3.Close;
//SendMessage(Form2.Handle, WM_SETREDRAW, Integer(True), 0);
finally
FreeAndNil(Form3);
end;
// finally
// FreeAndNil(Form2);
// end;
end;
但两种都行不同 我的
目的:
在form1中有点击一个按钮,然后弹出Form2,在Form2弹出前弹出Form3 然后完成操作后点击Form3的一个按钮后退到Form2 ,操作再后退到Form1 。所作这个操作,代码必须在Form1中完成。
效果:让Form3覆盖在Form2上。看起来象只是一个form.
原因:不能在form2的Onshow中创建,原因是Form2是一个公共的查询窗体,我不能因为我一个人的复杂操作,改变公共窗体。在Form3中做一些判断返回一些结果来做我查询条件(这个有我来完成),复杂的是按顺序显示窗体。
有不明白的请留言,我将在线等待。
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
frm : TForm1;--拷贝自己
//frm2 : TForm2;
//frm3 : TForm3;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
frm := TForm1.Create(self);
frm.frm := TForm1.Create(frm);
frm.frm.ShowModal;
frm.showmodal;
end;
点击button1,将生成一摸一样的窗体。
如果form2,form3与form1不同类,可以定义相应的成员变量。