我现在有一个程序,里面有N个窗体,我把其中一个作为主窗体,(不是MDI的哦),现在我想写一个通用的函数,在创建别的窗体的时候把这个窗体放在主窗体的图片位置,也就是覆盖主窗体的那个图片下面是我写的一个过程,可是就是显示不出来,而且还出现了窗体是一张空白的效果
procedure OpenForm( FormClass:TForm;  img:TcxImage);
begin
    FormClass:=TFormClass.Create(Formclass);
    FormClass.BorderStyle:=bsNone;
    FormClass.Position:=poDefault;
    FormClass.Left:=img.Left;
    FormClass.Top:=img.Top;
    FormClass.Width:=img.Width;
    FormClass.Height:=img.Height;
    FormClass.ShowModal;
end;那位能帮帮忙啊,谢谢了

解决方案 »

  1.   

    “覆盖主窗体的那个图片下面是我写的一个过程”?
    不必那么费劲,直接将那个“过程”赋值为nil就可以了,比如你想让图片的单击事件处理过程失效,可以:
    Img.OnClick := nil;再就是,通过设置尺寸然后将窗体模式显示,其实达不到目的...因为用API函数EnableWindow改变Parent窗口的Enabled属性,照样可以让模式显示的窗体失去模态....
      

  2.   

    简单一点,在主窗体上放一个panel,其他窗体上的控件也放在自己窗体的panel上,显示的时候把其他窗体上的panel的parent属性指向主窗体上的panel
      

  3.   

    主窗體的那個圖片位置必須是一個容器,然後 SetParent  過去才行。
      

  4.   

    现在窗体是创建出来了,位置也对了,可是创建好了之后大小不能随着主窗体的panel的大小改变而改变
    最重要的创建出来的窗体是空白
      

  5.   

            myFrmNode.FrmInstance         := TFormClass.Create(Application);
            myFrmNode.FrmInstance.Parent  := img;
            myFrmNode.FrmInstance.Align   := alClient;