我现在编写了一个父子窗口,每次起动时每一个子窗口都打开了。为什么会这样了,我想form2打开,别的窗口不打开如何做呢?

解决方案 »

  1.   

    program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2},
      Unit3 in 'Unit3.pas' {Form3};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TForm2, Form2);
      Application.CreateForm(TForm3, Form3);
      Application.Run;
    end.
    改成:
    program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2},
      Unit3 in 'Unit3.pas' {Form3};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
      

  2.   

    在主窗体中的处理过程type
       TForm1=class(TForm)
       ...
       private
         OperateForm:TForm;
       ...打开Form2窗体进行操作
      if OperateForm<>nil then
        FreeAndNil(OperateForm);
      OPerateForm:=TForm2.Create(nil);
    ....
    打开Form3窗体进行操作
      if OperateForm<>nil then
        FreeAndNil(OperateForm);
      OPerateForm:=TForm3.Create(nil);  
    ....
      

  3.   

    楼上的也行,
    如果你对代码不熟悉,可以这样:
      菜单:Project->options,在里面的forms选项卡进行设置,
     把不想启动的窗口放到Available forms中,等要用的时候再创建。
      

  4.   

    在菜单栏上点击Project--Options在Auto Create Forms选项框中将其余窗体双击移到Avail-able Forms栏中,在需要调用显示窗体时写
    if Form2 = Nil then
      Form2 := TForm2.Create(Nil);
    Form2.Show;
      

  5.   

    我运行上面所说的两种方法。在打开openimage时,程序出错。
    我有一个窗口名为openimage的。
    我的程序如下:
    var
     OperateForm:TForm;
    begin
      if OperateForm<>nil then
        FreeAndNil(OperateForm);
      OPerateForm:=Topenimage.Create(nil);    //我用这种方式对吗?
      OPerateForm.show;                       //这句写不写了?我写了也错,不写也错。为什么?
    end;请帮助解决。
      

  6.   

    if Not Assigned(form1) then 
    begin
      Form1:=Tform1.create(Application);
      Form1.show
    end;
      

  7.   

    在project->options->forms里面也可以处理
      

  8.   

    上面 Mrkang朋友的回答,还是有问题,请各位帮助呀。
      

  9.   

    菜单:Project->options,在里面的forms选项卡进行设置,
     把不想启动的窗口放到Available forms中,等要用的时候再创建
      

  10.   

    var
     OperateForm:Topenimage;
    begin
      if OperateForm<>nil then
        FreeAndNil(OperateForm);
      OPerateForm := Topenimage.Create(nil); 
    end;
      

  11.   

    OPerateForm := Topenimage.Create(mainForm);//mainForm 为主窗体,建议这样
      

  12.   

    你果你的主form里没有写虽的代码, 不应该出现这种情况, 你把你的主form贴出来看看,
      

  13.   

    在菜单栏上点击Project--Options在Auto Create Forms选项框中将其余窗体双击移到Avail-able Forms栏中,在需要调用显示窗体时写
    if Form2 = Nil then
      Form2 := TForm2.Create(Nil);
    Form2.Show;
      

  14.   

    program Project2;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {Form2},
      Unit3 in 'Unit3.pas' {Form3};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
    ///************************************主窗体的代码
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        btnCreateForm2: TButton;
        btnCreateForm3: TButton;
        procedure FormCreate(Sender: TObject);
        procedure btnCreateForm2Click(Sender: TObject);
        procedure btnCreateForm3Click(Sender: TObject);
      private
        { Private declarations }
         OperateForm:TForm;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationuses Unit2, Unit3;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
        OperateForm:=nil;
    end;
    //创建Form2
    procedure TForm1.btnCreateForm2Click(Sender: TObject);
    begin
        if OperateForm<>nil then
          FreeAndNil(OperateForm);
        OperateForm:=Tform2.Create(nil);
    end;
    //创建Form3
    procedure TForm1.btnCreateForm3Click(Sender: TObject);
    begin
        if OperateForm<>nil then
          FreeAndNil(OperateForm);
        OperateForm:=Tform3.Create(nil);
    end;end.
      

  15.   

    在projct->options->forms中将你不想创建的窗体从autocreate中移去
      

  16.   

    就是这个方法最简单了在projct->options->forms中将你不想创建的窗体从autocreate中移去