西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)編程開發(fā)其它知識(shí) → VCLSkin組件使用、Delphi界面美化圖文教程

VCLSkin組件使用、Delphi界面美化圖文教程

前往專題相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2012/3/30 11:23:53字體大。A-A+

作者:佚名點(diǎn)擊:401次評(píng)論:1次標(biāo)簽: Delphi

Borland Delphi8.0光盤版
  • 類型:編程工具大。83.1M語(yǔ)言:中文 評(píng)分:4.0
  • 標(biāo)簽:
立即下載

VCLSkin是個(gè)方便而且功能強(qiáng)大的界面加強(qiáng)型組件包。只要在程序的任何一個(gè)窗體里加入SkinData組件,設(shè)置好相關(guān)屬性,則所有這個(gè)程序里出現(xiàn)的窗體(包括對(duì)話框)都具有設(shè)置好的界面風(fēng)格。SkinStore組件又可以把一些皮膚文件預(yù)先存在里面,供SkinData隨時(shí)調(diào)用,表現(xiàn)出程序的多種風(fēng)格。下面簡(jiǎn)單地介紹它的用法。

1. VCLSkin綜述
VCLSkin 是一個(gè)能讓Delphi程序變得非常漂亮的控件包. 它允許允許軟件開發(fā)人員不用修改程序代碼便把軟件界面變得非常漂亮。它的美化支持窗體和控件和菜單。VCLSkin同時(shí)也提供了大量高質(zhì)量的skin(皮膚)讓你應(yīng)用于你的程序。
2. VCLSkin特點(diǎn)
VCLSkin 是一個(gè)用于讓用戶的程序界面更加漂亮的擴(kuò)展控件。 它允許軟件開發(fā)人員不用修改源代碼就能讓他們的程序界面更加漂亮。一個(gè)標(biāo)準(zhǔn)的程序界面能在窗體放入VCLSkin控件后變得非常漂亮,而這公公需要幾分鐘的時(shí)間。
VCLSkin 能做些什么 ?
不像其它控件那樣,你需要修改源代碼才能構(gòu)建一個(gè)漂亮的界面, VCLskin 能讓Delphi的標(biāo)準(zhǔn)控件在一下子就變得非常漂亮,而這一切都不用修改源代碼。
VCLSkin 支持以下的窗體:

    * Delphi Form
    * MDIform . (normal,Maximized, MInimized)
    * Common Windows dialogs (Open/Save,Font,Print,Color).
    * MsgBox.
    * Exception MsgBox.

VCLSkin 支持的標(biāo)準(zhǔn)控件:

    * The title bar of TForm
    * The title bar buttons
    * The borders of Tform
    * Tbutton,TBitbtn.
    * Tradiobutton and Tcheckbox
    * Tmainmenu and Tpopupmenu
    * Toolbar buttons
    * TTabcontrol and TPageControl
    * T Progressbar
    * TStatusbar
    * TCustomCombox,Tcombobox, TDbCombobox
    * TPanel and TGroupbox
    * TMemo, TListBox,TListView,TTreeview
    * TRadioGroup , TDBRadioGroup.
    * TCustomGrid,TStringgrid,TDrawgrid,Tdbgrid.
    * Third party component, Enlib, AdvGrid ..
同時(shí)也支持大量的第三方控件。

3.安裝
你可以像安裝其它控件一樣安裝這夽控件,其實(shí)就這幾步:

   1. 解壓縮 Vclskin2.zip 到任意目錄
   2. 在 Delphi IDE 環(huán)境中選擇菜單 "File. Open...", 然后找到連接庫(kù) vclskindX.dpk, 按著點(diǎn)擊Compile按鈕。
   3. 在 Environment 添加VCLSkin控件所在的路徑。
*****************************************************************************************

1. TSkinData
TSkinData 主要用于美化你的程序, 只要把TSkinData控件放下去,它就能自動(dòng)美化所有窗體。
屬性
Active: 使用或取消對(duì)程序的美化。
DisableTag: 取消對(duì)某個(gè)特定的組件的美化; 把組件的Tag屬性設(shè)為99就行了。
(control.tag mod 100=disabletag)
SkinControls: 指定哪類組件能被美化.
SkinFile: skin(皮膚)文件的包含路徑的文件名,在運(yùn)行時(shí)加載。
SkinStore: 在設(shè)計(jì)模式時(shí)儲(chǔ)備的skin文件.
SkinFormType: 能使用多種美化方式.
方法
LoadFromStream(Stream: TStream);
LoadFromFile(value:string);
LoadFromCollection(astore:TSkinStore;aindex:integer);
在運(yùn)行時(shí)裝載skin文件.
UpdateSkinControl(fParent:Tform);
UpdateMenu(fParent:Tform);
在運(yùn)行時(shí)組件創(chuàng)建時(shí)進(jìn)行美化。
事件
OnFormSkin(Sender:TObject;aName:string;Var DoSkin:boolean);
OnFormSkin 事件的發(fā)生先于美化窗體, 如果 Doskin 為 true, Vclskin 就會(huì)美化這個(gè)窗體, 如果為false,Vclskin 就會(huì)跳過(guò)這個(gè)窗體. aName 是窗體的類名.
OnSkinChangned(Sender:TObject);
OnSkinChanged 發(fā)生在skin文件改變之后。

2. TSkinStore
TSkinStore 能讓你在設(shè)計(jì)模式時(shí)儲(chǔ)存多個(gè)skin文件。
TSkinData 能在運(yùn)行時(shí)從 TSkinStore 裝載skin文件:
TSkinData.LoadFromCollection(astore:TSkinStore;aindex:integer),

3. 怎么美化程序界面
你可以在幾分鐘內(nèi)構(gòu)建一個(gè)漂亮的程序.
1 把 TSkindata 控件放在主窗體上。
2 設(shè)置 Skindata.skinstore 屬性 , 把skin文件儲(chǔ)存在你的程序中。
3 設(shè)置 Skindata.active = true
4 編譯運(yùn)行你的程序。

4.   VCLSkin    FAQ

1 如果我的工程中有14個(gè)窗體,用不用每個(gè)窗體都放一個(gè)skin控件?
不用,你只需要放置一個(gè)Tskindata在你的主窗體,Vclskin就能自動(dòng)美化每個(gè)窗體。
2 怎樣美化一個(gè)內(nèi)嵌的窗體 ?
Vclskin 不能自動(dòng)美化內(nèi)嵌窗體,你要手動(dòng)控制它。壓縮包中有一個(gè)"NestedForm"的例子,講的是在運(yùn)行狀態(tài)美化內(nèi)嵌窗體、框架的。
3 怎樣美化動(dòng)態(tài)控件 ?
你需要手動(dòng)控制它。代碼如下:
control:=Tmycontrol.create(form1);
skindata1.UpdateSkincontrol(form1); // add this line to skin dynamic control.
4 怎樣美化依靠窗體 ?
Vclskin 支持?看绑w. 例程代碼如下:
procedure TDockableForm.FormShow(Sender: TObject);
begin

if MainForm.skindata1.active then MainForm.skindata1.skinform(handle);

end;

5 怎么美化動(dòng)態(tài)的右鍵菜單 ?

例程代碼如下:
popup:=Tpopupmenu.create(form1);
..... add menuite
skindata1.UpdateMenu(form1); //add this line
popup.popup(x,y);

6 怎樣美化動(dòng)態(tài)窗體 ?
Vclskin 可以美化動(dòng)態(tài)窗體 , 但不能自動(dòng)美化內(nèi)嵌窗體. 點(diǎn)擊這兒查看如何美化內(nèi)嵌窗體.

7 找不到文件 'c:\program files\borland\delphi7\SM\winskindata.pas'
Delphi7 試用版與Delphi7正式版的Dcu文件格式是不一樣的。
如果你使用的是正式版,你可以安裝一個(gè)演示包。vclskin2.zip.
如果你使用的是試用版,你可以安裝一個(gè)演示包。 D7trial.zip.

8 使用 FastReport 時(shí),出現(xiàn)了“無(wú)效操作,控件沒有父窗體的的錯(cuò)誤提示 ?
設(shè)置 TSkindata.skincontrols.xcFastReport = true 就可以解決這個(gè)問(wèn)題。

9 使用 ReportBuilder 出現(xiàn)了“無(wú)效操作,控件沒有父窗體的錯(cuò)誤提示?
你可以在 TSkindata.OnformSkin 事件中取消美化這個(gè)控件。 代碼如下 :
procedure Tform1.SkinData1FormSkin(Sender: TObject;
aName: String; var DoSkin: Boolean);
begin

//'TppPrintPreview' 就是要取消美化的窗體名稱。
if aName='TppPrintPreview' then doskin:=false;

end;

10 如何存取skin文件的顏色?
你可以借助 Tskindata.colors[] 屬性來(lái)存取顏色。
比如說(shuō) , 窗體的背景色是 : skindata.Colors[csButtonFace].
TShemeColor=(csText,csTitleTextActive,csTitleTextNoActive,
csButtonFace,csButtonText,
csButtonHilight,csButtonlight,csButtonShadow,csButtonDkshadow,
csSelectText,csSelectBg,csHilightText,csHilight,
csMenuBar,csMenuBarText,csMenuText,csMenubg,
csScrollbar,csTextDisable);
TShemeColors=array[csText..csTextDisable] of Tcolor;
Skindata.Colors: TShemeColors;

11 用戶能自定義那些可視化控件的外觀嗎?
你可以使用 skin builder自定義細(xì)節(jié).

12 怎樣取消美化某個(gè)窗體或控件?
設(shè)置 form.tag=99 取消 美化這個(gè)窗體。

13 如何在美化一個(gè)工程的窗體標(biāo)題欄和菜單的風(fēng)格?
設(shè)置 TSkindata.skincontrols.xcMainmenu = false

先建立一個(gè)新工程,加入一些常見的組件。運(yùn)行結(jié)果的界面如圖9.18所示。

然后加入一個(gè)SkinData控件,把Active屬性設(shè)為True。再單擊SkinStore屬性的帶省略號(hào)的按鈕,選擇VCLSkin自帶的一個(gè)皮膚文件macos.skn。然后,編譯,運(yùn)行,結(jié)果如圖9.19所示。

圖9.18 原始程序 圖9.19 加入VCLSkin組件后的效果

此處將程序界面從原來(lái)古板的樣貌變成Mac Os風(fēng)格沒有用一行代碼,只設(shè)了SkinData的屬性。下面我們結(jié)合SkinStore組件講講程序中“換膚”的做法。

在窗體上加入一個(gè)SkinStore組件,在Object Inspector中單擊Store后面的帶省略號(hào)的按鈕,出現(xiàn)如圖9.20所示的窗體。

單擊圖標(biāo),新生成一個(gè)SkinStore,可以像上面設(shè)置SkinData的SkinStore那樣設(shè)置好它的屬性。創(chuàng)建多個(gè)SkinStore,存入多個(gè)皮膚。然后在窗體的按鈕上加入如下代碼(代碼的作用是當(dāng)程序運(yùn)行中按下Button1時(shí),SkinData1會(huì)從SkinStore1中讀取第1個(gè)皮膚,并顯示出來(lái)):

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;

“換膚”功能完成了。在程序中按下那幾個(gè)按鈕,程序界面的風(fēng)格就會(huì)相應(yīng)改變。圖9.21示出了兩個(gè)例子。

圖9.21 VCLSkin的另兩種皮膚效果

VCLSkin的功能遠(yuǎn)不止如此,我們挑幾個(gè)說(shuō)一下:

· DataSkin有個(gè)DisableTag屬性。默認(rèn)值是99。如果窗體上哪個(gè)組件的Tag值是99的話,DataSkin不會(huì)對(duì)這個(gè)組件起作用。

· 支持MDI窗體。

· 支持通用Windows對(duì)話框(打開,保存文件等)。

· SkinControls屬性可以設(shè)置對(duì)哪類控件起作用。

· 在一個(gè)程序中不同窗體可以有不同皮膚風(fēng)格。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(1)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)