本人现有一小问题请教各位高手:举例说明"现有三窗体form1,form2,form3,form1为普通窗体(启动窗口),启动后在form1上控某个控钮显示form2(form2的窗体属性设为主窗体),在显示form2的同时显示form3(form3为form2的子窗体)".请问我该如何处理才正确??

解决方案 »

  1.   

    在form2的onshow中模态调用(showmodal)form1,show form3 ,form1中的按钮click中写close关闭form1.
      

  2.   

    请注意:form2是主窗体,form3是form2的子窗体。form1在启动是显示,然后调用form2,同时打开form3。谢谢回复!
      

  3.   

    一般有输入用户名,密码,验证启动主窗体的程序和你说的道理都是一样的。
    我的方法是:
      在dpr文件中:
     Application.Initialize;
     frmpass:=Tfrmpass.Create(application);
       if frmpass.ShowModal = 1 then begin
         frmpass.Visible:=false;
        ........
         Application.CreateForm(TMainForm, MainForm);
        frmpass.Close;
        Application.Run;
    end else begin
         Application.Terminate;
        exit;
    end;在frmpass(输入并验证用户名密码的窗体)中放置两个按纽,‘确定'按纽单击事件,self.modalresult:=mrok,在‘取消’中self.modalresult:=mrcancel
    就可以了
      

  4.   

    unit form3;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;type
      TForm3 = class(TForm)
     private
         FAsChild: Boolean;
         FTempParent: TWinControl;
        protected
        procedure CreateParams(var Params: TCreateParams); override;
        procedure Loaded; override;
      public
         constructor Create(AOwner: TComponent); overload; override;
         constructor Create(AOwner: TComponent; AParent: TWinControl); reintroduce; overload;
        { Public declarations }
      end;var
      Form9: TForm9;implementation{$R *.dfm}
    constructor TForm3.Create(AOwner: TComponent);
    begin
      FAsChild := False;
      inherited Create(AOwner);
    end;constructor TForm3.Create(AOwner: TComponent; AParent: TWinControl);
    begin
      FAsChild := True;
      FTempParent := aParent;
      inherited Create(AOwner);
    end;procedure TForm3.Loaded;
    begin
      inherited;
      if FAsChild then
      begin
        align := alClient;
        BorderStyle := bsNone;
        BorderIcons := [];
        Parent := FTempParent;
        Position := poDefault;
      end;
    end;procedure TForm3.CreateParams(var Params: TCreateParams);
    Begin
      Inherited CreateParams(Params);
      if FAsChild then
        Params.Style := Params.Style or WS_CHILD;
    end;end;form2
    var 
    different:tform3;procedure Tform2.button1Click(Sender: TObject);
    begin
       different:=tform3.Create(mainform,panel);
       different.Show;
    end;