1. TSkinData
TSkinData 主要用於美化你的程序, 只要把TSkinData控件放下去,它就能自動美化所有窗體。
屬性
Active: 使用或取消對程序的美化。
DisableTag: 取消對某個特定的組件的美化; 把組件的Tag屬性設為99就行了。
(control.tag mod 100=disabletag)
(control.tag mod 100=disabletag)
SkinControls: 指定哪類組件能被美化.
SkinFile:
skin(皮膚)文件的包含路徑的文件名,在運行時加載。
SkinStore: 在設計模式時儲備的skin文件.
SkinFormType: 能使用多種美化方式.
方法
LoadFromStream(Stream: TStream);
LoadFromFile(value:string);
LoadFromCollection(astore:TSkinStore;aindex:integer);
LoadFromFile(value:string);
LoadFromCollection(astore:TSkinStore;aindex:integer);
在運行時裝載skin文件.
UpdateSkinControl(fParent:Tform);
UpdateMenu(fParent:Tform);
UpdateMenu(fParent:Tform);
在運行時組件創建時進行美化。
事件
OnFormSkin(Sender:TObject;aName:string;Var DoSkin:boolean);
OnFormSkin 事件的發生先於美化窗體, 如果 Doskin 為 true, Vclskin 就會美化這個窗體, 如果為false,Vclskin 就會跳過這個窗體. aName 是窗體的類名.
OnSkinChangned(Sender:TObject);
OnSkinChanged 發生在skin文件改變之后。
2. TSkinStore
TSkinStore 能讓你在設計模式時儲存多個skin文件。
TSkinData 能在運行時從 TSkinStore 裝載skin文件:
TSkinData.LoadFromCollection(astore:TSkinStore;aindex:integer),
3. 怎么美化程序界面
你可以在幾分鍾內構建一個漂亮的程序.
1 把 TSkindata 控件放在主窗體上。
2
設置 Skindata.skinstore 屬性 , 把skin文件儲存在你的程序中。
3 設置 Skindata.active = true
4 編譯運行你的程序。
4. VCLSkin FAQ
1 如果我的工程中有14個窗體,用不用每個窗體都放一個skin控件?
不用,你只需要放置一個Tskindata在你的主窗體,Vclskin就能自動美化每個窗體。
Vclskin 不能自動美化內嵌窗體,你要手動控制它。壓縮包中有一個"NestedForm"的例子,講的是在運行狀態美化內嵌窗體、框架的。
3 怎樣美化動態控件 ?
你需要手動控制它。代碼如下:
control:=Tmycontrol.create(form1); skindata1.UpdateSkincontrol(form1); // add this line to skin dynamic control. |
4 怎樣美化依靠窗體 ?
Vclskin 支持停靠窗體. 例程代碼如下:
procedure TDockableForm.FormShow(Sender: TObject); begin if MainForm.skindata1.active then MainForm.skindata1.skinform(handle); end; |
5 怎么美化動態的右鍵菜單 ?
例程代碼如下:
popup:=Tpopupmenu.create(form1); ..... add menuite skindata1.UpdateMenu(form1); //add this line popup.popup(x,y); |
6 怎樣美化動態窗體 ?
Vclskin 可以美化動態窗體 , 但不能自動美化內嵌窗體.
點擊這兒查看如何美化內嵌窗體.
7 找不到文件 'c:/program files/borland/delphi7/SM/winskindata.pas'
Delphi7 試用版與
Delphi7正式版的Dcu文件格式是不一樣的。
8 使用 FastReport 時,出現了“無效操作,控件沒有父窗體的的錯誤提示 ?
設置
TSkindata.skincontrols.xcFastReport = true 就可以解決這個問題。
9 使用 ReportBuilder 出現了“無效操作,控件沒有父窗體的錯誤提示?
你可以在
TSkindata.OnformSkin 事件中取消美化這個控件。 代碼如下 :
procedure Tform1.SkinData1FormSkin(Sender: TObject; aName: String; var DoSkin: Boolean); begin //'TppPrintPreview' 就是要取消美化的窗體名稱。 if aName='TppPrintPreview' then doskin:=false; end; |
10 如何存取skin文件的顏色?
你可以借助
Tskindata.colors[] 屬性來存取顏色。
比如說 , 窗體的背景色是 : skindata.Colors[csButtonFace].
比如說 , 窗體的背景色是 : 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自定義細節.
12 怎樣取消美化某個窗體或控件?
設置
form.tag=99 取消 美化這個窗體。
13 如何在美化一個工程的窗體標題欄和菜單的風格?
設置
TSkindata.skincontrols.xcMainmenu = false .