问题如上, 使用 business skin form 开发一个 ribbon 风格的程序, 程序的主界面,基本布局排好了.所有皮肤相关的控件,都放在主窗体上.程序中,有很多的窗体, 都是以 showmodel 的形式弹出来的..我想让所有弹出来的窗体,都与主窗体一样,保持一致的界面风格, 可是,又不相在每个窗体上都放置一些皮肤控件, 有什么好的办法解决吗?也就是希望: 放置一组皮肤控件(放在主窗体上,或是放在data modal 窗体上), 让他的做用范围,是整个应用程序,而不是它所在的窗体..

解决方案 »

  1.   

    写一个基类窗TBaseFrm(含有SKIN),然后全部继承这个: TYourFrm = class(TBaseFrm)
      

  2.   

    用VclSkin吧,虽然皮肤花样没有BSF这么多,也够用了这个一个控件就够用了,不必每个Form都放控件
      

  3.   

    Var
      int1: Integer;
      PropInfo: PPropInfo;
    Begin
      //设置皮肤控件
      For int1 := 0 To Self.ComponentCount - 1 Do
        Begin
          PropInfo := GetPropInfo(Self.Components[int1], 'SkinData');
          If PropInfo <> Nil Then
            SetObjectProp(Self.Components[int1], PropInfo, FormMain.bsSkinData1);
        End;
    End;
      

  4.   

    VclSkin 能做出 ribbon 风格的程序吗?
      

  5.   

    额,我那段代码没用么?只要再create的时候加上这段代码,就应该能实现你的那个要求啊,如果有父窗体,那么只要在父窗体的create事件里加上那段代码就ok了啊。
      

  6.   

    to: Allanlove不好意思哦, 还没去测试, 不过应该能行的.
      

  7.   

    to: Allanlove测试了, 发现有一个BUG 哦..因为:窗体本身没有 SkinData 的属性, 所以,不能通过上面的代码进行设置. 还是需要手工放置一个:TbsBusinessSkinForm 在窗体上面才行.