源码如下:
program Project1;uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2},
  Unit3 in 'Unit3.pas' {Form3},
  Unit4 in 'Unit4.pas' {Form4};{$R *.res}begin
  //form1:=tform1.Create(application);
  //form1.Show;
  Application.CreateForm(Tform1, form1);
  if form1.checkbox1.Checked =true then
  begin
  Application.Initialize;
  Application.CreateForm(TForm2, Form2);
  
  //Application.Run;
  end
  
  else
  begin
  Application.Initialize;
  Application.CreateForm(TForm3, Form3);
  //Application.Run;
  end;
  Application.Run;
end.
form1中代码:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementationuses Unit2, Unit3;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
 if checkbox1.Checked =true
     then form2.show
     else
     begin
     Application.CreateForm(TForm3, Form3);
     form3.show;
     end;
form1.Hide;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
application.Terminate ;
end;end.
form2中代码:
unit Unit2;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, XPMenu;type
  TForm2 = class(TForm)
    MainMenu1: TMainMenu;
    XPMenu1: TXPMenu;
    File1: TMenuItem;
    Open1: TMenuItem;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Open1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form2: TForm2;implementationuses Unit1, Unit4;{$R *.dfm}procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form1.show;
end;procedure TForm2.Open1Click(Sender: TObject);
beginform4:=Tform4.Create(self);//Application.CreateForm(TForm4, Form4);
form4.show;
end;end.

解决方案 »

  1.   

    主窗体的 formstyle 属性应该设置为 fsMDIForm
      

  2.   

    如果把form1的属性设置为fsMDIform ,那错误是没有了,但是希望出现的MDICHILD窗口的父窗口就不对了。现在希望的的父窗口是form2,而不是form1。
      

  3.   

    登录窗口不一定要放在最先的启动位置 你可以把它在 form2.oncreate 时建立
    如果没有什么复杂的参数判断的话 放在启动项目里也可以 但在 form2 建立前 要将其cafree
    通常我是按前者方法做 大不了登陆时把form2隐藏起来
      

  4.   

    但是我现在在登陆的时候要判断是要打开那个窗口啊。而且打开的任何一窗口都是个mdiform。所以不能把form2隐藏。再说也不可能同时隐藏两个窗口。也就是说现在的主窗口不可能是form2.或者是另一希望打开的form。
      

  5.   

    http://www.csdn.net/expert/topic/531/531729.xml
    我们有缘
      

  6.   

    http://www.csdn.net/expert/topic/531/531729.xml
    我们有缘