zoukankan      html  css  js  c++  java
  • [入门] 探索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在同一个目录,因为测试程序样式文件没加路径,如果不在同一目录就没显示效果。

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

    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 https://files.cnblogs.com/vicen/FireMonkey_StyleBook.rar

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

     

  • 相关阅读:
    node实现图片分割
    Windows10开启Ubuntu子系统并搭建Docker环境
    从零搭建Window前端开发环境
    apue 文章集锦
    [apue] Linux / Windows 系统上只能建立不超过 PATH_MAX / MAX_PATH 长度的路径吗?
    [apue] 一个快速确定新系统上各类限制值的工具
    [apue] sysconf 的四种返回状态
    [apue] epoll 的一些不为人所注意的特性
    一个工业级、跨平台、轻量级的 tcp 网络服务框架:gevent
    [apue] 书中关于打印服务代码的一个错误
  • 原文地址:https://www.cnblogs.com/vicen/p/2198618.html
Copyright © 2011-2022 走看看