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中做一些判断返回一些结果来做我查询条件(这个有我来完成),复杂的是按顺序显示窗体。
有不明白的请留言,我将在线等待。

解决方案 »

  1.   

    在FORMSTYLE属性设置好主表和MDI子表!
      

  2.   

    不知道我理解的对不对
    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不同类,可以定义相应的成员变量。
      

  3.   

    hfycl(袒右) 到处UP,不回答问题,想骗分啊!!!