Delphi XE2 之 FireMonkey 入门(20) - TStyleBook(皮肤、样式相关)
生活随笔
收集整理的這篇文章主要介紹了
Delphi XE2 之 FireMonkey 入门(20) - TStyleBook(皮肤、样式相关)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
我覺得叫 "皮膚" 不如叫 "樣式" 或 "風(fēng)格", 因?yàn)樗梢园蛣?dòng)作關(guān)聯(lián)的動(dòng)畫.
在 FMX 下, 控件可以任意繪制, 各部件個(gè)性化的屬性可以統(tǒng)一保存成一個(gè) *.style 文件.
XE2 在 "...\Program Files\Embarcadero\RAD Studio\9.0\Redist\styles\Fmx\" 下提供了如下樣式文件:
Air.Style Amakrits.Style AquaGraphite.style Blend.Style dark.style FMX.Platform.iOS.style FMX.Platform.Mac.style FMX.Platform.Win.style GoldenGraphite.Style iOS.Style MacBlue.Style MacGraphite.Style RubyGraphite.style Windows7.Style
文件是文本格式, 類似窗體文件, 可用 TStyleBook 讀入并管理.
不過要給程序套用樣式, 確簡(jiǎn)單得很:
procedure TForm1.Button1Click(Sender: TObject); beginApplication.StyleFileName := '樣式文件名'; //如果樣式文件和 exe 同目錄, 還可以省略路徑 end;
在窗體上添加一個(gè) TStyleBook(StyleBook1), 可以載入、編輯、另存這些樣式.
編輯 StyleBook1 后, 可以把它直接賦給窗體的 StyleBook 屬性:
procedure TForm1.Button1Click(Sender: TObject); beginSelf.StyleBook := StyleBook1; //只作用于當(dāng)前窗體 end;
窗體的 StyleBook 屬性既然也是 TStyleBook 對(duì)象, 可以直接使用它:
procedure TForm1.Button1Click(Sender: TObject); beginStyleBook := TStyleBook.Create(Self); //默認(rèn)情況下, 窗體的 StyleBook 還沒有建立StyleBook.FileName := '樣式文件'; //或者用下一行//StyleBook.Resource.LoadFromFile('樣式文件'); //TStyleBook 是用 Resource(TStrings) 儲(chǔ)存數(shù)據(jù)的 end;
單獨(dú)修改控件樣式可以使用 StyleLookup 屬性, 如:
procedure TForm1.Button1Click(Sender: TObject); beginButton1.StyleLookup := 'checkbox'; end; //在設(shè)計(jì)時(shí)可從控件的右鍵菜單
*.style 文件中 StyleName 命名有約定(這是我猜的):
1、類名(去掉前面的T) + 'style' //這是獨(dú)立控件的樣式名稱 2、類名(去掉前面的T) //這是控件子部件的樣式名稱 3、既然有了命名約定, 控件可以根據(jù)自己的類名去套用, 所以會(huì)發(fā)現(xiàn)大多數(shù)控件的 StyleLookup 屬性并無賦值 4、修改控件或子部件的樣式都應(yīng)該通過 StyleLookup 屬性, 而不是 StyleName(我都覺得 StyleName 這個(gè)屬性有點(diǎn)多余).
我倒是發(fā)現(xiàn)控件子部件的 StyleName 都可以讀的出來:
procedure TForm1.Button1Click(Sender: TObject); beginShowMessage(Memo1.HScrollBar.StyleName);ShowMessage(Memo1.VScrollBar.StyleName); end;
其它諸如 ApplyStyleLookup()、UpdateStyle()、FindStyleResource() 等相關(guān)方法, 一般都是被自動(dòng)調(diào)用的.
程序會(huì)把默認(rèn)樣式嵌入到資源中(名稱: defaultstyle, 格式: RT_RCDATA), 恢復(fù)程序的默認(rèn)樣式時(shí)只需:
procedure TForm1.Button1Click(Sender: TObject); beginApplication.StyleFileName := ''; //程序會(huì)自動(dòng)套用默認(rèn)樣式Form1.StyleBook := nil; //如果窗體單獨(dú)設(shè)置了樣式, 這樣恢復(fù) end;
之前有同學(xué)問到, 怎么修改窗體標(biāo)題欄的樣式?
學(xué)習(xí)過程中, 我沒有發(fā)現(xiàn)很直接的辦法;
暫時(shí)要我做, 只能是隱藏標(biāo)題欄, 重新繪制;
等了解的窗體的更多機(jī)制以后, 或許也能從 *.style 文件中找到辦法.
很膚淺, 誰知道更多, 愿能告訴我.
轉(zhuǎn)載于:https://www.cnblogs.com/del/archive/2011/09/30/2196045.html
總結(jié)
以上是生活随笔為你收集整理的Delphi XE2 之 FireMonkey 入门(20) - TStyleBook(皮肤、样式相关)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript 实现 GriwVi
- 下一篇: 测试人员容易遗漏一些隐藏的缺陷