没有登录
中国开发网: 论坛: 程序员情感CBD: 贴子 540918
haitao
VCLSkin组件的使用
——的确正是我想要的!
——不过不知道运行时动态创建的frame及其里面的控件,也能有效吗?

http://book.chinaz.com/Delphi/Delphi%E6%B8%B8%E6%88%8F%E7%BC%96%E7%A8%8B%E5%AF%BC%E5%AD%A6/9/9.5%20VCLSkin%E7%BB%84%E4%BB%B6%E7%9A%84%E4%BD%BF%E7%94%A8.htm
VCLSkin组件的使用


VCLSkin是个方便而且功能强大的界面加强型组件包。只要在程序的任何一个窗体里加入SkinData组件,设置好相关属性,则所有这个程序里出现的窗体(包括对话框)都具有设置好的界面风格。SkinStore组件又可以把一些皮肤文件预先存在里面,供SkinData随时调用,表现出程序的多种风格。下面简单地介绍它的用法。

先建立一个新工程,加入一些常见的组件。运行结果的界面如图9.18所示。

然后加入一个SkinData控件,把Active属性设为True。再单击SkinStore属性的带省略号的按钮,选择VCLSkin自带的一个皮肤文件macos.skn。然后,编译,运行,结果如图9.19所示。



图9.18 原始程序 图9.19 加入VCLSkin组件后的效果

此处将程序界面从原来古板的样貌变成Mac Os风格没有用一行代码,只设了SkinData的属性。下面我们结合SkinStore组件讲讲程序中“换肤”的做法。

在窗体上加入一个SkinStore组件,在Object Inspector中单击Store后面的带省略号的按钮,出现如图9.20所示的窗体。

单击图标,新生成一个SkinStore,可以像上面设置SkinData的SkinStore那样设置好它的属性。创建多个SkinStore,存入多个皮肤。然后在窗体的按钮上加入如下代码(代码的作用是当程序运行中按下Button1时,SkinData1会从SkinStore1中读取第1个皮肤,并显示出来):

procedure TForm1.Button1Click(Sender: TObject);

begin

SkinData1.LoadFromCollection(SkinStore1,1);

end;

类似地,加入以下代码:

procedure TForm1.Button3Click(Sender: TObject);

begin

SkinData1.LoadFromCollection(SkinStore1,2);

end;



procedure TForm1.SpeedButton3Click(Sender: TObject);

begin

SkinData1.LoadFromCollection(SkinStore1,3);

end;

“换肤”功能完成了。在程序中按下那几个按钮,程序界面的风格就会相应改变。图9.21示出了两个例子。



图9.21 VCLSkin的另两种皮肤效果

VCLSkin的功能远不止如此,我们挑几个说一下:

· DataSkin有个DisableTag属性。默认值是99。如果窗体上哪个组件的Tag值是99的话,DataSkin不会对这个组件起作用。

· 支持MDI窗体。

· 支持通用Windows对话框(打开,保存文件等)。

· SkinControls属性可以设置对哪类控件起作用。

· 在一个程序中不同窗体可以有不同皮肤风格。
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录