[入门] 探索FireMonkey的StyleBook皮肤控件的使用(附示例程序)

StyleBook 介绍及VICEN对皮肤控件的一些看法

可以说StyleBook的出现,简直是皮肤控件厂商的噩梦,因为用户可以通过StyleBook快速切换控件样式,而不需要在去购买第三方换肤控件,对于免费并且是官方集成的StyleBook来说,优势不言而喻。因此,以后的皮肤控件除非有自己的特色,例如Raize,提供了很多系统没有的控件,并且有自己的独特的外形风格,否则很难在发展下去。我们很期待有一套类似QQ样的界面控件套件,可以换肤、切换窗口样式颜色、跟换窗口背景图片等。

先来看看StyleBook为我们提供了哪些默认的界面风格,这些界面风格都被安装在:

..\Program Files\Embarcadero\RAD Studio\9.0\Redist\styles\Fmx\

目录下,如果你要发布你的程序,将这里的你需要用到的.style文件一并复制到你发布软件目录即可。

StyleBook提供的界面风格如下:

Windows7.Style

RubyGraphite.style

MacGraphite.Style

MacBlue.Style

iOS.Style

GoldenGraphite.Style

FMX.Platform.Win.style

FMX.Platform.Mac.style

FMX.Platform.iOS.style

dark.style

Blend.Style

AquaGraphite.style

Amakrits.Style

Air.Style

虽然并不多,但可以自行设计扩展,而且支持动态切换,使用也相当的简单。

下面我们看看如何来使用 StyleBook

1) 首先我们来新建一个FireMonkey HD Application工程

2) 在窗口上放一个StyleBook控件,它位于Standard控件页下。

3) 将窗口的StyleBook属性与StyleBookl控件链接。

procedure TFrmStyleTest.FormCreate(Sender: TObject);
begin
  Self.StyleBook := StyleBook;
end;

4) 现在就可以使用StyleBook.FileName := '样式名称' 来切换样式了,需要特别注意的是,样式文件必须与EXE在同一个目录,因为测试程序样式文件没加路径,如果不在同一目录就没显示效果。

代码如下:(示例程序在最后放上链接)

ContractedBlock.gif ExpandedBlockStart.gif View Code
  1 unit FireStyle;
2
3 interface
4
5 uses
6 System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
7 FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Menus, FMX.Edit,
8 FMX.ListBox, FMX.Layouts, FMX.Memo;
9
10 type
11 TFrmStyleTest = class(TForm)
12 StyleBook: TStyleBook;
13 MainMenu: TMainMenu;
14 Menu_File: TMenuItem;
15 Menu_File_Open: TMenuItem;
16 Menu_Help: TMenuItem;
17 Menu_File_New: TMenuItem;
18 Menu_File_Line0: TMenuItem;
19 Menu_File_Quit: TMenuItem;
20 Menu_Help_About: TMenuItem;
21 Chk_Test: TCheckBox;
22 Rb_Style_0: TRadioButton;
23 Rb_Style_1: TRadioButton;
24 Rb_Style_2: TRadioButton;
25 Rb_Style_3: TRadioButton;
26 Rb_Style_4: TRadioButton;
27 Rb_Style_5: TRadioButton;
28 Rb_Style_6: TRadioButton;
29 Rb_Style_7: TRadioButton;
30 Rb_Style_8: TRadioButton;
31 Rb_Style_9: TRadioButton;
32 Rb_Style_10: TRadioButton;
33 Rb_Style_11: TRadioButton;
34 Rb_Style_12: TRadioButton;
35 Rb_Style_13: TRadioButton;
36 Lab_StyleName: TLabel;
37 But_Close: TButton;
38 Ed_StyleName: TEdit;
39 tb_Test: TTrackBar;
40 pb_Bar: TProgressBar;
41 sb_Test: TScrollBar;
42 cmb_Test: TComboBox;
43 ListBoxItem1: TListBoxItem;
44 ListBoxItem2: TListBoxItem;
45 ListBoxItem3: TListBoxItem;
46 Memo_Test: TMemo;
47 tmr_Process: TTimer;
48 procedure FormCreate(Sender: TObject);
49 procedure But_CloseClick(Sender: TObject);
50 procedure Menu_File_QuitClick(Sender: TObject);
51 procedure Rb_Style_0Click(Sender: TObject);
52 procedure tmr_ProcessTimer(Sender: TObject);
53 private
54 procedure ApplyStyle(swStyle: WideString);
55 { Private declarations }
56 public
57 { Public declarations }
58 end;
59
60 var
61 FrmStyleTest: TFrmStyleTest;
62
63 implementation
64
65 {$R *.fmx}
66
67 procedure TFrmStyleTest.But_CloseClick(Sender: TObject);
68 begin
69 Close;
70 end;
71
72 procedure TFrmStyleTest.FormCreate(Sender: TObject);
73 begin
74 Self.StyleBook := StyleBook;
75 ApplyStyle('iOS.style');
76 end;
77
78 procedure TFrmStyleTest.Menu_File_QuitClick(Sender: TObject);
79 begin
80 Close;
81 end;
82
83 procedure TFrmStyleTest.Rb_Style_0Click(Sender: TObject);
84 begin
85 try
86 ApplyStyle((Sender as TRadioButton).Text);
87 except end;
88 end;
89
90 procedure TFrmStyleTest.tmr_ProcessTimer(Sender: TObject);
91 begin
92 if (pb_Bar.Value + 1) > 100 then pb_Bar.Value := 0
93 else pb_Bar.Value := pb_Bar.Value + 1;
94 end;
95
96 procedure TFrmStyleTest.ApplyStyle(swStyle:WideString);
97 begin
98 if swStyle<>'' then StyleBook.FileName := swStyle;
99 Ed_StyleName.Text := swStyle;
100 end;
101
102 end.

下载测试程序:

下载地址1 http://files.cnblogs.com/vicen/FireMonkey_StyleBook.rar

下载地址2 http://good.gd/1650416.htm

 

转载于:https://www.cnblogs.com/vicen/archive/2011/10/03/2198618.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值