日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Delphi XE2 之 FireMonkey 入门(20) - TStyleBook(皮肤、样式相关)

發(fā)布時(shí)間:2024/7/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。