最近在使用vclskin控件的时候碰到了一个问题,不知道是我没使用正确还是这个控件的bug,请知道的高手指点一下。
    创建两个form(from1,form2),在form1中放个panel,我现在想把form2嵌入到panel中,但是form2中的控件的skin就没有显示了,我的代码如下,用了两种方法都不行:
  方法1: application.createform(Tfrom2,form2);
         form2.parent := panel;
         form2.align := alclient;
         form2.show;
  方法2: application.createform(Tform2,form2);
         form2.dock(panel, panel.boundsrect);//停靠的各种属性已经设置
         form2.show;
  声明:如果是不嵌入显示是正常的
         application.createform(Tfrom2,form2);
         form2.show;
        显示一切正常。

解决方案 »

  1.   

    application.CreateForm(Tfrom2,form2);
    form2.Dock(panel1,BoundsRect);
    form2.show;
    应该没问题呀……
    "控件的skin就没有显示了"是什么意思,看不到form2上的可视控件?
      

  2.   

    {**调用嵌入窗体**}
       try
          Application.CreateForm(TForm2,Form2);
          Form2.Parent:=panel;
          Form2.Show;
       end;
       finally
          
       end;
    end;我写过,在实际应用项目做在用,没问题
      

  3.   

    等我试试啊,你在form2上也放一个vclskin试了吗?
      

  4.   

    不是控件的问题
    是因为你的FORM2 成为FORM1容器里的一个东西,所以FORM2继承FORM1的皮肤不知道我这样理解对不对?
      

  5.   

    谢谢大家的热心回答,我刚才到官方网站找到答案了。
    应该这么写:
         form2 := Tform2.Create(self);
         form2.Parent := panel1;
         if skindata1.active then
            skindata1.AddNestForm(self,form2);
         form2.Show;
      

  6.   

    MoneyUserForm := TMoneyUserForm.Create(self);
      MoneyUserForm.Parent := Panel1;
      //MoneyUserForm.HostDockSite := Panel1;
      MainForm.skindata1.AddNestForm(self,MoneyUserForm);
      MoneyUserForm.Show;用AddNestForm(self,MoneyUserForm);