我创建了3个窗体,一个是主窗体,其他2个是副窗体(不是MDI)。先前可以通过主窗体的2个按钮和菜单能调出这2个窗体,可是现在程序一运行,这2个副窗体就自己显示了,我怎么才能不要他在主窗体创建了时候显示(原来刚作完的时候不是这样的,那时候正常显示)?

解决方案 »

  1.   

    啊?
    那你就在两个负窗体创建完毕后就把它
    Hide掉
    Form2.Hide;
    ..要显示的时候再显示出来!(动态创建窗体也可以,释放完全后就肯定不会出来,你的问题可能是窗体创建顺序的问题)
      

  2.   

    顺序没有问题,就是县创建的主窗体,如果用hide隐藏虽然可以,但是如果窗体多了那在程序运行的时候,就要等所有的窗体创建完才行。那使用的人会感到很奇怪。而且其他窗体在创建的过程是可以看到的。
      

  3.   

    project->options->forms->Auto Create Forms 中只保留你的主窗体就可以了!
      

  4.   

    project->options->forms->Auto Create Forms
    但是我的其他窗体通过按钮和菜单就调不出来了。
      

  5.   

    一般情况下,除了主窗体外,其余的都是要调用show(例如form1.show)才能显示的,这个是默认的,但情况是所有的窗口在程序初始化开始就全部创建了的,只是没有显示出来,保存在内存中,不管你目前时不时需要它,这样可能比较消耗内存。
    如果你的是使用的默认属性的话,可以直接在窗口的属性栏目中把visable(好像是这样写的,呵呵)设置为false。显示的时候再设置为ture。
    如果你想临时创建,并且在使用后从内存中清除的话,可以这样。
    按ctrl+f12显示工程主文件,你可以看到你创建的所有窗口都在里面,例如
    application.createform(form1,tform1);
    这样的语句。找到你需要临时创建的窗口的那一行然后干掉它,再在你需要显示的时候,如一个按钮动作中,这样写:
    var form:tform1;
    try 
    begin
    form=:application.createform(form1,tform1);
    form.showmodel; //模态窗口,表示必须返回主窗口才能接受鼠标,键盘消息
    end
    finally
    form.free
    end;
    这样的好处是只有在你需要的时候创建,不需要的时候不占用太多内存。但是就是比较麻烦,还有就是你当然得在这个单元中引用form1单元了。