📄 skindata.pas
字号:
InActiveEffect: TspInActiveEffect;
StartCursorIndex: Integer;
CursorIndex: Integer;
BuildMode: Boolean;
PopupWindow: TspDataSkinPopupWindow;
HintWindow: TspDataSkinHintWindow;
Empty: Boolean;
FPicture, FInActivePicture, FMask: TBitMap;
FRollUpPicture, FRollUpMask: TBitMap;
FActivePictures: TList;
FPictureName, FInActivePictureName, FMaskName: String;
FRollUpPictureName, FRollUpMaskName: String;
FActivePicturesNames: TStrings;
FCursorsNames: TStrings;
ObjectList: TList;
AreaList: TList;
CtrlList: TList;
LTPoint, RTPoint, LBPoint, RBPoint: TPoint;
BGPictureIndex: Integer;
MDIBGPictureIndex: Integer;
MainMenuRect: TRect;
IconRect: TRect;
MainMenuPopupUp: Boolean;
MaskRectArea: TRect;
HitTestLTPoint,
HitTestRTPoint,
HitTestLBPoint,
HitTestRBPoint: TPoint;
ClRect: TRect;
BorderW: Integer;
TopStretch, LeftStretch,
RightStretch, BottomStretch: Boolean;
RollUpLeftPoint, RollUpRightPoint: TPoint;
SkinName: String;
SkinAuthor: String;
AuthorURL: String;
AuthorEmail: String;
SkinComments: String;
procedure SaveToCustomIniFile(F: TCustomIniFile);
procedure AddBitMap(FileName: String);
procedure DeleteBitMap(Index: Integer);
procedure AddSkinArea(AName: String; ARect: TRect);
procedure SendSkinDataMessage(M: LongInt);
function GetIndex(AIDName: String): Integer;
function GetControlIndex(AIDName: String): Integer;
function GetAreaIndex(AIDName: String): Integer;
procedure ClearObjects;
procedure ClearAll;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
//
procedure LoadFromFile(FileName: String);
procedure SaveToFile(FileName: String);
procedure LoadFromCompressedFile(FileName: String);
procedure SaveToCompressedFile(FileName: String);
procedure StoreToDisk(APath: String);
//
procedure LoadCompressedStoredSkin(AStoredSkin: TspCompressedStoredSkin);
//
procedure ClearSkin;
published
property CompressedStoredSkin: TspCompressedStoredSkin
read FCompressedStoredSkin write SetCompressedStoredSkin;
property ResourceStrData: TspResourceStrData
read FResourceStrData write SetResourceStrData;
end;
function ReadInActiveEffect(IniFile: TCustomIniFile;
Section: String; Ident: String): TspInActiveEffect;
procedure WriteInActiveEffect(IniFile: TCustomIniFile;
Section: String; Ident: String;
IE: TspInActiveEffect);
function ReadMorphKind(IniFile: TCustomIniFile;
Section: String; Ident: String): TMorphKind;
procedure WriteMorphKind(IniFile: TCustomIniFile;
Section: String; Ident: String; MK: TMorphKind);
// Internal messages
const
WM_BEFORECHANGESKINDATA = WM_USER + 201;
WM_CHANGESKINDATA = WM_USER + 202;
WM_AFTERCHANGESKINDATA = WM_USER + 203;
WM_CHANGERESSTRDATA = WM_USER + 250;
implementation
Uses spZLibCompress;
function CheckSkinFile(F: TCustomIniFile): Boolean;
begin
Result := F.SectionExists('VERSION') and F.SectionExists('PICTURES') and
F.SectionExists('FORMINFO') and F.SectionExists('SKINOBJECTS') and
F.SectionExists('SKINCONTROLS');
end;
function ReadMorphKind;
var
S: String;
begin
S := IniFile.ReadString(Section, Ident, 'mkdefault');
if S = 'mkdefault'
then Result := mkDefault
else
if S = 'mkgradient'
then Result := mkGradient
else
if S = 'mkleftgradient'
then Result := mkLeftGradient
else
if S = 'mkrightgradient'
then Result := mkRightGradient
else
if S = 'mkleftslide'
then Result := mkLeftSlide
else
if S = 'mkrightslide'
then Result := mkRightSlide
else
if S = 'mkpush'
then Result := mkPush
else Result := mkDefault;
end;
procedure WriteMorphKind;
var
S: String;
begin
case MK of
mkDefault: S := 'mkdefault';
mkGradient: S := 'mkgradient';
mkLeftGradient: S := 'mkleftgradient';
mkRightGradient: S := 'mkrightgradient';
mkLeftSlide: S := 'mkleftslide';
mkRightSlide: S := 'mkrightslide';
mkPush: S := 'mkpush';
end;
IniFile.WriteString(Section, Ident, S);
end;
procedure WriteInActiveEffect;
var
S: String;
begin
case IE of
ieBrightness: S := 'iebrightness';
ieDarkness: S := 'iedarkness';
ieGrayScale: S := 'iegrayscale';
ieNoise: S := 'ienoise';
ieSplitBlur: S := 'iesplitblur';
ieInvert: S := 'ieinvert';
end;
IniFile.WriteString(Section, Ident, S);
end;
function ReadInActiveEffect;
var
S: String;
begin
S := IniFile.ReadString(Section, Ident, 'iebrightness');
if S = 'iebrightness'
then Result := ieBrightness
else
if S = 'iedarkness'
then Result := ieDarkness
else
if S = 'iegrayscale'
then Result := ieGrayScale
else
if S = 'ienoise'
then Result := ieNoise
else
if S = 'iesplitblur'
then Result := ieSplitBlur
else
if S = 'ieinvert'
then Result := ieInvert
else Result := ieGrayScale;
end;
constructor TspDataSkinControl.Create;
begin
IDName := AIDName;
PictureIndex := -1;
MaskPictureIndex := -1;
SkinRect := Rect(0, 0, 0, 0);
CursorIndex := -1;
end;
procedure TspDataSkinControl.LoadFromFile;
begin
PictureIndex := IniFile.ReadInteger(IDName, 'pictureindex', -1);
MaskPictureIndex := IniFile.ReadInteger(IDName, 'maskpictureindex', -1);
CursorIndex := IniFile.ReadInteger(IDName, 'cursorindex', -1);
SkinRect := ReadRect(IniFile, IDName, 'skinrect');
end;
procedure TspDataSkinControl.SaveToFile;
begin
IniFile.EraseSection(IDName);
IniFile.WriteInteger(IDName, 'pictureindex', PictureIndex);
IniFile.WriteInteger(IDName, 'maskpictureindex', MaskPictureIndex);
IniFile.WriteInteger(IDName, 'cursorindex', CursorIndex);
WriteRect(IniFile, IDName, 'skinrect', SkinRect);
end;
constructor TspDataSkinMainMenuBar.Create;
begin
inherited;
TrackMarkColor := 0;
TrackMarkActiveColor := 0;
end;
procedure TspDataSkinMainMenuBar.LoadFromFile;
begin
inherited;
ItemsRect := ReadRect(IniFile, IDName, 'itemsrect');
MenuBarItem := IniFile.ReadString(IDName, 'menubaritem', '');
CloseButton := IniFile.ReadString(IDName, 'closebutton', '');
MinButton := IniFile.ReadString(IDName, 'minbutton', '');
MaxButton := IniFile.ReadString(IDName, 'maxbutton', '');
SysMenuButton := IniFile.ReadString(IDName, 'sysmenubutton', '');
TrackMarkColor := IniFile.ReadInteger(IDName, 'trackmarkcolor', 0);
TrackMarkActiveColor := IniFile.ReadInteger(IDName, 'trackmarkactivecolor', 0);
end;
procedure TspDataSkinMainMenuBar.SaveToFile;
begin
inherited;
WriteRect(IniFile, IDName, 'itemsrect', ItemsRect);
IniFile.WriteString(IDName, 'menubaritem', MenuBarItem);
IniFile.WriteString(IDName, 'closebutton', CloseButton);
IniFile.WriteString(IDName, 'minbutton', MinButton);
IniFile.WriteString(IDName, 'maxbutton', MaxButton);
IniFile.WriteString(IDName, 'sysmenubutton', SysMenuButton);
IniFile.WriteInteger(IDName, 'trackmarkcolor', TrackMarkColor);
IniFile.WriteInteger(IDName, 'trackmarkactivecolor', TrackMarkActiveColor);
end;
procedure TspDataSkinUpDownControl.LoadFromFile(IniFile: TCustomIniFile);
begin
inherited;
UpButtonRect := ReadRect(IniFile, IDName, 'upbuttonrect');
ActiveUpButtonRect := ReadRect(IniFile, IDName, 'activeupbuttonrect');
DownUpButtonRect := ReadRect(IniFile, IDName, 'downupbuttonrect');
DownButtonRect := ReadRect(IniFile, IDName, 'downbuttonrect');
ActiveDownButtonRect := ReadRect(IniFile, IDName, 'activedownbuttonrect');
DownDownButtonRect := ReadRect(IniFile, IDName, 'downdownbuttonrect');
LTPoint := Point(0, 0);
RTPoint := Point(0, 0);
LBPoint := Point(0, 0);
RBPoint := Point(0, 0);
ClRect := NullRect;
end;
procedure TspDataSkinUpDownControl.SaveToFile(IniFile: TCustomIniFile);
begin
LTPoint := Point(0, 0);
RTPoint := Point(0, 0);
LBPoint := Point(0, 0);
RBPoint := Point(0, 0);
ClRect := NullRect;
inherited;
WriteRect(IniFile, IDName, 'upbuttonrect', UpButtonRect);
WriteRect(IniFile, IDName, 'activeupbuttonrect', ActiveUpButtonRect);
WriteRect(IniFile, IDName, 'downupbuttonrect', DownUpButtonRect);
WriteRect(IniFile, IDName, 'downbuttonrect', DownButtonRect);
WriteRect(IniFile, IDName, 'activedownbuttonrect', ActiveDownButtonRect);
WriteRect(IniFile, IDName, 'downdownbuttonrect', DownDownButtonRect);
end;
constructor TspDataSkinListBox.Create(AIDName: String);
begin
inherited;
FontName := 'Arial';
FontStyle := [];
FontHeight := 14;
FontColor := 0;
CaptionFontName := 'Arial';
CaptionFontStyle := [];
CaptionFontHeight := 14;
CaptionFontColor := 0;
HScrollBarName := '';
VScrollBarName := '';
BothScrollBarName := '';
end;
procedure TspDataSkinListBox.LoadFromFile;
begin
inherited;
//
SItemRect := ReadRect(IniFile, IDName, 'itemrect');
ActiveItemRect := ReadRect(IniFile, IDName, 'activeitemrect');
FocusItemRect := ReadRect(IniFile, IDName, 'focusitemrect');
ItemLeftOffset := IniFile.ReadInteger(IDName, 'itemleftoffset', 0);
ItemRightOffset := IniFile.ReadInteger(IDName, 'itemrightoffset', 0);
ItemTextRect := ReadRect(IniFile, IDName, 'itemtextrect');
FontName := IniFile.ReadString(IDName, 'fontname', 'Arial');
FontHeight := IniFile.ReadInteger(IDName, 'fontheight', 14);
FontStyle := ReadFontStyles(IniFile, IDName, 'fontstyle');
FontColor := IniFile.ReadInteger(IDName, 'fontcolor', 0);
ActiveFontColor := IniFile.ReadInteger(IDName, 'activefontcolor', 0);
FocusFontColor := IniFile.ReadInteger(IDName, 'focusfontcolor', 0);
//
CaptionRect := ReadRect(IniFile, IDName, 'captionrect');
CaptionFontName := IniFile.ReadString(IDName, 'captionfontname', 'Arial');
CaptionFontHeight := IniFile.ReadInteger(IDName, 'captionfontheight', 14);
CaptionFontStyle := ReadFontStyles(IniFile, IDName, 'captionfontstyle');
CaptionFontColor := IniFile.ReadInteger(IDName, 'captionfontcolor', 0);
//
UpButtonRect := ReadRect(IniFile, IDName, 'upbuttonrect');
ActiveUpButtonRect := ReadRect(IniFile, IDName, 'activeupbuttonrect');
DownUpButtonRect := ReadRect(IniFile, IDName, 'downupbuttonrect');
DownButtonRect := ReadRect(IniFile, IDName, 'downbuttonrect');
ActiveDownButtonRect := ReadRect(IniFile, IDName, 'activedownbuttonrect');
DownDownButtonRect := ReadRect(IniFile, IDName, 'downdownbuttonrect');
CheckButtonRect := ReadRect(IniFile, IDName, 'checkbuttonrect');
ActiveCheckButtonRect := ReadRect(IniFile, IDName, 'activecheckbuttonrect');
DownCheckButtonRect := ReadRect(IniFile, IDName, 'downcheckbuttonrect');
//
VScrollBarName := IniFile.ReadString(IDName, 'vscrollbarname', 'vscrollbar');
HScrollBarName := IniFile.ReadString(IDName, 'hscrollbarname', 'hscrollbar');
BothScrollBarName := IniFile.ReadString(IDName, 'bothhscrollbarname', 'bothhscrollbar');
end;
procedure TspDataSkinListBox.SaveToFile;
begin
inherited;
WriteRect(IniFile, IDName, 'itemrect', SItemRect);
WriteRect(IniFile, IDName, 'activeitemrect', ActiveItemRect);
WriteRect(IniFile, IDName, 'focusitemrect', FocusItemRect);
IniFile.WriteInteger(IDName, 'itemleftoffset', ItemLeftOffset);
IniFile.WriteInteger(IDName, 'itemrightoffset', ItemRightOffset);
WriteRect(IniFile, IDName, 'itemtextrect', ItemTextRect);
IniFile.WriteString(IDName, 'fontname', FontName);
IniFile.WriteInteger(IDName, 'fontheight', FontHeight);
WriteFontStyles(IniFile, IDName, 'fontstyle', FontStyle);
IniFile.WriteInteger(IDName, 'fontcolor', FontColor);
IniFile.WriteInteger(IDName, 'activefontcolor', ActiveFontColor);
IniFile.WriteInteger(IDName, 'focusfontcolor', FocusFontColor);
//
WriteRect(IniFile, IDName, 'captionrect', CaptionRect);
IniFile.WriteString(IDName, 'captionfontname', CaptionFontName);
IniFile.WriteInteger(IDName, 'captionfontheight', CaptionFontHeight);
WriteFontStyles(IniFile, IDName, 'captionfontstyle', CaptionFontStyle);
IniFile.WriteInteger(IDName, 'captionfontcolor', CaptionFontColor);
//
WriteRect(IniFile, IDName, 'upbuttonrect', UpButtonRect);
WriteRect(IniFile, IDName, 'activeupbuttonrect', ActiveUpButtonRect);
WriteRect(IniFile, IDName, 'downupbuttonrect', DownUpButtonRect);
WriteRect(IniFile, IDName, 'downbuttonrect', DownButtonRect);
WriteRect(IniFile, IDName, 'activedownbuttonrect', ActiveDownButtonRect);
WriteRect(IniFile, IDName, 'downdownbuttonrect', DownDownButtonRect);
WriteRect(IniFile, IDName, 'checkbuttonrect', CheckButtonRect);
WriteRect(IniFile, IDName, 'activecheckbuttonrect', ActiveCheckButtonRect);
WriteRect(IniFile, IDName, 'downcheckbuttonrect', DownCheckButtonRect);
//
IniFile.WriteString(IDName, 'vscrollbarname', VScrollBarName);
IniFile.WriteString(IDName, 'hscrollbarname', HScrollBarName);
IniFile.WriteString(IDName, 'bothhscrollbarname', BothScrollBarName);
end;
procedure TspDataSkinCheckListBox.LoadFromFile;
begin
inherited;
CheckImageRect := ReadRect(IniFile, IDName, 'checkimagerect');
ItemCheckRect := ReadRect(IniFile, IDName, 'itemcheckrect');
UnCheckImageRect := ReadRect(IniFile, IDName, 'uncheckimagerect');
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -