我到现在居然还不会最基本的弹出窗体,,,我新建了一个MDI项目,然后主页面设为了fsMDIForm,然后在主页面上加了一个MainMenu,在菜单里面添加了单击事件,弹出窗体,,我新建的这个窗体设为了fsMDIChild形式,结果运行时问题就出现了,,,点菜单项却弹不出窗体,,,我又新加了一个按钮实现同样的功能却也不行,然后我把这个要弹出的窗体放在AUTO-CREATE FORMS里面, 运行时还是不显示,,,后来我把这个窗体设为了fsStayOnTop,就好使了,,这是为什么呢,,我单位原来的项目子窗体都是设为fsMDIChild形式的,为什么我的却不好使呢,我错在哪了呢???大家能给我讲讲吗???还有,为什么我弹出窗体时只写一条Application.CreateForm(Tpage1Form,page1Form);就行,而你书上写的Application.CreateForm(Tpage1Form,page1Form);
                 page1Form.Show;
                 page1Form.Free;
反而会不好使,不是显示,cannot make a visible windows modal 就是弹出的窗体时闪一下就没有了呢?

解决方案 »

  1.   

    子窗体从AUTO-CREATE FORMS里去掉,   如:子窗体名称为:frmChild   frmChild := TfrmChild.create(self);
    frmChild.show;frmChild窗体onClose事件里写:  Action := caFree;
      

  2.   

    子窗体从AUTO-CREATE FORMS里去掉,
    =====================================
    这是在改成fsStayOnTop之前去掉了
    ------------------------------------------------------
    frmChild窗体onClose事件里写:  Action := caFree;
    =======================================
    这个也有
    ------------------------------------------------------
    frmChild := TfrmChild.create(self);
    frmChild.show;
    =======================================
    这个语句的意思不太明白
      

  3.   

    子窗体从AUTO-CREATE FORMS里去掉,
    ===================================== //既然已经去掉了,系统不会帮你创建,那么,请看下面
    这是在改成fsStayOnTop之前去掉了
    ------------------------------------------------------
    frmChild窗体onClose事件里写:  Action := caFree;
    =======================================
    这个也有
    ------------------------------------------------------
    frmChild := TfrmChild.create(self); //这个就是你点击菜单的时候手工的创建窗体,并显示
    frmChild.show;
    =======================================
    这个语句的意思不太明白
      

  4.   

    procedure TmaindelForm.Button1Click(Sender: TObject);
    begin
      page1Form := Tpage1Form.create(self);
      page1Form.show;
    end;改成这样了还是不好使啊
      

  5.   

    晕,不知道你搞了些什么?
    我现在最简单的
    新建一个项目:
    把form1的FormStyle设为fsMDIForm;
    增加一个新窗体form2
    把form2的FormStyle设为fsMDIChild;F9运行,一切OK
      

  6.   

    一开始MAIN只加一个按钮时,PAGE1也只加一个LABLE时,点击后是可以看到PAGE1的,但看到PAGE1的同时,还能看到MAIN的按钮,出现在了PAGE1上,然后我后来又给MAIN加了PANEL又加了一个按钮,结果再点击那个新按钮时,就看不到PAGE1了
      

  7.   

    晕,那你应该是这样啊,照前面说的,自己手工去创建
    procedure TmaindelForm.Button1Click(Sender: TObject);
    begin
      page1Form := Tpage1Form.create(self);
      page1Form.Parent := Panel1;       //显示在那个容器里面!
      page1Form.show;
    end;
      

  8.   

    你应该用向导建立一个mdi工程,里面有例子...
    MDI子窗口不能ShowModal;(至少我知道的是这样)
    然后在MDI窗口的ONCLOSE写Action := caFree;
    你show之后马上就free掉,当然一闪就没了...