如何在加载皮肤控件的条件下,在标题栏上添加按钮?

jaffy 2010-08-11 09:46:31
没有美工,所以只好用控件。现在是用的AlphaControls 6.44
问题是想将换肤按钮放在标题栏上,效果和foxmail的效果比较类似,有没有人做过,给个思路先?
...全文
266 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
周药师 2010-08-18
  • 打赏
  • 举报
回复
这样的话,最好去设计公司的设计一下
之前我们公司请了一个设计的 2K就搞定了
jaffy 2010-08-18
  • 打赏
  • 举报
回复
哎,就几个人做软件,哪里去找美工啊!
周药师 2010-08-18
  • 打赏
  • 举报
回复
皮肤控件还是尽量少用
避免一些意外
还是自己贴图的有保障些
jaffy 2010-08-18
  • 打赏
  • 举报
回复
用过的皮肤控件很多,但这个控件我看来是比较炫的,关键在于它不仅支持多窗口换肤,还支持Alpha通道,色调偏差,饱和度;图标还支持PNG矢量放大,缩小。还有好多特性,大家有空看看帮助吧。

当然它并非完美,也有些小毛病。下面结合自己的使用谈谈吧,如有什么不对之处,欢迎大家讨论!mailto:jaffy@21cn.com

安装
我用过AlphaControls 6.44和7.04两个版本,解压后会发现每个DELPHI和BCB版本都有单独的目录,安装和普通控件的安装没有两样,需要注意,要先删除旧版本后再装。但我发现一个问题,就是DELPHI

和BCB(codegear 2009)没法同时装这个控件,我一般先在BCB下安装,再想在DELPHI下用,就报错提示已经安装了。在设计时,无法看到控件,但打开相关代码没有问题,可以用拷贝BCB控件的办法在

DELPHI下使用,效果是一样的。还有,不同控件版本之间无法平滑移植(起码我碰到的情况是这样),这个问题真没办法,所以只能期望你使用的是高版本了。

使用
安装后,会看到它有三个面板,alphaStandard alphaAdditional alphaTools,这三个面板中的控件基本够我们构造界面用的了。
下面介绍的都是7.04中的属性

alphaTools面板
首先需要使用alphaTools中的TsSkinManager控件,拖入后,设置SkinDirectory目录为皮肤的绝对路径,然后就可以再SkinName中选择不同的皮肤了;也可以设置InternalSkins,将已有皮肤直接添加到

控件中形成内部皮肤,这样就不用带着皮肤发布了。再介绍几个常用属性,Active 激活属性,这个就不说了;ExtendedBorders 是否扩展边框,可以让外围框架看起来更明显一些;HueOffset 色调偏差

0-360;Saturation 饱和度0-100;SkinningRules 换肤规则。

AnimEffects这个属性最炫了,你可以在这里设置移动时窗体透明度;Buttons特效的规则;窗体和对话框SHOW和HIDE时的特效等等,大家可以自己多设置一下,看看效果。

sSkinProvider1也是个比较重要的控件,拖入后,可以设置一些特效的开关(我研究不多),TitleButtons这个属性可以设置标题按钮,你可以在这里添加按钮,然后通过弹出窗体来实现皮肤及属性的

动态设置,就和FOXMAIL的换肤界面效果一样了。不过FOXMAIL中有个亮度的属性,我还不清楚是设置的什么?还请高手们赐教!

这个面板中还有个Magnifier控件也很炫,可以直接实现放大镜效果,style选amsLens。代码很简单Execute()和Hide()就完了。

alphaStandard面板
这里都是些标准VCL控件的继承,大家看看都很简单,主要就是设置SKINDATA中的SkinSection属性;可以变化出很多效果;还要注意有的控件有BoundLabel属性,挺好的,可以外挂一个LABEL,方便界面

布置。


alphaAdditional面板
这里都是些高级控件扩展,比如日期控件,计算器控件,颜色选择控件,字体控件等等;FrameLookBar是个很好的界面控件,一般实现导航栏功能,并且可以自动隐藏,鼠标重入后自动显现;

好了,写了一早上,放两个图吧,大家看看效果:



最后,说一个问题,请有经验的大虾们赐教

DLL中的FORM无法继承皮肤,我上了AlphaControls论坛,里面也有人遇到这个问题,说解决方案是勾选build with run time package 并选择运行时库(带R)的,可我按照它的设置没有效果;另外我发

现只要是窗口(无论是否在DLL中)的BorderStyle为bsnone,就不可以继承皮肤了,这使得框架设计不好复用,我希望外围框架使通用独立的。它的例子中都是用FRAME,不过我试过好像也不行。
银点 2010-08-16
  • 打赏
  • 举报
回复
静等楼主心得,我也用这个组件
AFreshGirl 2010-08-16
  • 打赏
  • 举报
回复
楼主,心得发到哪里了?
laowang2 2010-08-16
  • 打赏
  • 举报
回复
等待啊
jaffy 2010-08-11
  • 打赏
  • 举报
回复
所有的消息处理中都加上了画按钮的程序,就是不顶用。
图片拷贝也用了也无效。
真想知道Foxmail是如何实现的
不过我刚才试了试VCLSKIN好像可以,再多研究一下。
laowang2 2010-08-11
  • 打赏
  • 举报
回复
自己兼做美工。
AlphaControls 没用过,处理WM_NCPAINT消息画上一个按钮样子的图片,
然后处理WM_NCLBUTTONDOWN来处理鼠标点击。不知道可以不可以。
jaffy 2010-08-11
  • 打赏
  • 举报
回复
研究了一天,有所小成。
看来AlphaControls控件皮肤真不错,做的效果还比较像FOXMAIL
没有美工的人们,终于可以有自己的漂亮框架了。

晚上回去整理一下,明天把心得发上来,呵呵。
YeBinYe 2010-08-11
  • 打赏
  • 举报
回复
AlphaControls的sample里面应该有相关的源码

552

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧