1612 lines
53 KiB
ObjectPascal
1612 lines
53 KiB
ObjectPascal
unit spkt_Appearance;
|
|
|
|
{$mode Delphi}
|
|
|
|
(*******************************************************************************
|
|
* *
|
|
* File: spkt_Appearance.pas *
|
|
* Description: Base classes for the appearance classes of the toolbar elements*
|
|
* Copyright: (c) 2009 by Spook. *
|
|
* License: Modified LGPL (with linking exception, like Lazarus LCL) *
|
|
' See "license.txt" in this installation *
|
|
* *
|
|
*******************************************************************************)
|
|
|
|
interface
|
|
|
|
uses
|
|
Graphics, Classes, Forms, SysUtils,
|
|
SpkGUITools, SpkXMLParser, SpkXMLTools,
|
|
spkt_Dispatch, spkt_Exceptions;
|
|
|
|
type
|
|
TSpkPaneStyle = (
|
|
psRectangleFlat, psRectangleEtched, psRectangleRaised,
|
|
psDividerFlat, psDividerEtched, psDividerRaised
|
|
);
|
|
|
|
TSpkElementStyle = (esRounded, esRectangle);
|
|
|
|
TSpkStyle = (
|
|
spkOffice2007Blue,
|
|
spkOffice2007Silver, spkOffice2007SilverTurquoise,
|
|
spkMetroLight, spkMetroDark
|
|
);
|
|
|
|
|
|
{ TSpkTabAppearance }
|
|
|
|
TSpkTabAppearance = class(TPersistent)
|
|
private
|
|
FDispatch: TSpkBaseAppearanceDispatch;
|
|
FTabHeaderFont: TFont;
|
|
FBorderColor: TColor;
|
|
FGradientFromColor: TColor;
|
|
FGradientToColor: TColor;
|
|
FGradientType: TBackgroundKind;
|
|
FInactiveHeaderFontColor: TColor;
|
|
// Getter & setter methods
|
|
procedure SetHeaderFont(const Value: TFont);
|
|
procedure SetBorderColor(const Value: TColor);
|
|
procedure SetGradientFromColor(const Value: TColor);
|
|
procedure SetGradientToColor(const Value: TColor);
|
|
procedure SetGradientType(const Value: TBackgroundKind);
|
|
procedure SetInactiveHeaderFontColor(const Value: TColor);
|
|
|
|
procedure TabHeaderFontChange(Sender: TObject);
|
|
|
|
public
|
|
// *** Constructor, destructor, Assign ***
|
|
// Remarks: Appearance must have Assign because it exists as a
|
|
// published property.
|
|
constructor Create(ADispatch: TSpkBaseAppearanceDispatch);
|
|
destructor Destroy; override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
|
|
procedure LoadFromXML(Node: TSpkXMLNode);
|
|
procedure SaveToPascal(AList: TStrings);
|
|
procedure SaveToXML(Node: TSpkXMLNode);
|
|
procedure Reset(AStyle: TSpkStyle = spkOffice2007Blue);
|
|
|
|
published
|
|
property TabHeaderFont: TFont read FTabHeaderFont write SetHeaderFont;
|
|
property BorderColor: TColor read FBorderColor write SetBorderColor;
|
|
property GradientFromColor: TColor read FGradientFromColor write SetGradientFromColor;
|
|
property GradientToColor: TColor read FGradientToColor write SetGradientToColor;
|
|
property GradientType: TBackgroundKind read FGradientType write SetGradientType;
|
|
property InactiveTabHeaderFontColor: TColor read FInactiveHeaderFontColor write SetInactiveHeaderFontColor;
|
|
end;
|
|
|
|
|
|
{ TSpkPaneAppearance }
|
|
|
|
TSpkPaneAppearance = class(TPersistent)
|
|
private
|
|
FDispatch: TSpkBaseAppearanceDispatch;
|
|
FCaptionFont: TFont;
|
|
FBorderDarkColor: TColor;
|
|
FBorderLightColor: TColor;
|
|
FCaptionBgColor: TColor;
|
|
FGradientFromColor: TColor;
|
|
FGradientToColor: TColor;
|
|
FGradientType: TBackgroundKind;
|
|
FHotTrackBrightnessChange: Integer;
|
|
FStyle: TSpkPaneStyle;
|
|
procedure SetCaptionBgColor(const Value: TColor);
|
|
procedure SetCaptionFont(const Value: TFont);
|
|
procedure SetBorderDarkColor(const Value: TColor);
|
|
procedure SetBorderLightColor(const Value: TColor);
|
|
procedure SetGradientFromColor(const Value: TColor);
|
|
procedure SetGradientToColor(const Value: TColor);
|
|
procedure SetGradientType(const Value: TBackgroundKind);
|
|
procedure SetHotTrackBrightnessChange(const Value: Integer);
|
|
procedure SetStyle(const Value: TSpkPaneStyle);
|
|
|
|
procedure CaptionFontChange(Sender: TObject);
|
|
|
|
public
|
|
constructor Create(ADispatch: TSpkBaseAppearanceDispatch);
|
|
destructor Destroy; override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
|
|
procedure LoadFromXML(Node: TSpkXMLNode);
|
|
procedure SaveToPascal(AList: TStrings);
|
|
procedure SaveToXML(Node: TSpkXMLNode);
|
|
procedure Reset(AStyle: TSpkStyle = spkOffice2007Blue);
|
|
|
|
published
|
|
property BorderDarkColor: TColor read FBorderDarkColor write SetBorderDarkColor;
|
|
property BorderLightColor: TColor read FBorderLightColor write SetBorderLightColor;
|
|
property CaptionBgColor: TColor read FCaptionBgColor write SetCaptionBgColor;
|
|
property CaptionFont: TFont read FCaptionFont write SetCaptionFont;
|
|
property GradientFromColor: TColor read FGradientFromColor write SetGradientFromColor;
|
|
property GradientToColor: TColor read FGradientToColor write SetGradientToColor;
|
|
property GradientType: TBackgroundKind read FGradientType write SetGradientType;
|
|
property HotTrackBrightnessChange: Integer read FHotTrackBrightnessChange write SetHotTrackBrightnessChange default 20;
|
|
property Style: TSpkPaneStyle read FStyle write SetStyle default psRectangleEtched;
|
|
end;
|
|
|
|
|
|
{ TSpkElementAppearance }
|
|
TSpkElementAppearance = class(TPersistent)
|
|
private
|
|
FDispatch: TSpkBaseAppearanceDispatch;
|
|
FCaptionFont: TFont;
|
|
FIdleFrameColor: TColor;
|
|
FIdleGradientFromColor: TColor;
|
|
FIdleGradientToColor: TColor;
|
|
FIdleGradientType: TBackgroundKind;
|
|
FIdleInnerLightColor: TColor;
|
|
FIdleInnerDarkColor: TColor;
|
|
FIdleCaptionColor: TColor;
|
|
FHotTrackFrameColor: TColor;
|
|
FHotTrackGradientFromColor: TColor;
|
|
FHotTrackGradientToColor: TColor;
|
|
FHotTrackGradientType: TBackgroundKind;
|
|
FHotTrackInnerLightColor: TColor;
|
|
FHotTrackInnerDarkColor: TColor;
|
|
FHotTrackCaptionColor: TColor;
|
|
FHotTrackBrightnessChange: Integer;
|
|
FActiveFrameColor: TColor;
|
|
FActiveGradientFromColor: TColor;
|
|
FActiveGradientToColor: TColor;
|
|
FActiveGradientType: TBackgroundKind;
|
|
FActiveInnerLightColor: TColor;
|
|
FActiveInnerDarkColor: TColor;
|
|
FActiveCaptionColor: TColor;
|
|
FStyle: TSpkElementStyle;
|
|
procedure SetActiveCaptionColor(const Value: TColor);
|
|
procedure SetActiveFrameColor(const Value: TColor);
|
|
procedure SetActiveGradientFromColor(const Value: TColor);
|
|
procedure SetActiveGradientToColor(const Value: TColor);
|
|
procedure SetActiveGradientType(const Value: TBackgroundKind);
|
|
procedure SetActiveInnerDarkColor(const Value: TColor);
|
|
procedure SetActiveInnerLightColor(const Value: TColor);
|
|
procedure SetCaptionFont(const Value: TFont);
|
|
procedure SetHotTrackCaptionColor(const Value: TColor);
|
|
procedure SetHotTrackFrameColor(const Value: TColor);
|
|
procedure SetHotTrackGradientFromColor(const Value: TColor);
|
|
procedure SetHotTrackGradientToColor(const Value: TColor);
|
|
procedure SetHotTrackGradientType(const Value: TBackgroundKind);
|
|
procedure SetHotTrackInnerDarkColor(const Value: TColor);
|
|
procedure SetHotTrackInnerLightColor(const Value: TColor);
|
|
procedure SetHotTrackBrightnessChange(const Value: Integer);
|
|
procedure SetIdleCaptionColor(const Value: TColor);
|
|
procedure SetIdleFrameColor(const Value: TColor);
|
|
procedure SetIdleGradientFromColor(const Value: TColor);
|
|
procedure SetIdleGradientToColor(const Value: TColor);
|
|
procedure SetIdleGradientType(const Value: TBackgroundKind);
|
|
procedure SetIdleInnerDarkColor(const Value: TColor);
|
|
procedure SetIdleInnerLightColor(const Value: TColor);
|
|
procedure SetStyle(const Value: TSpkElementStyle);
|
|
|
|
procedure CaptionFontChange(Sender: TObject);
|
|
public
|
|
constructor Create(ADispatch: TSpkBaseAppearanceDispatch);
|
|
destructor Destroy; override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
|
|
procedure LoadFromXML(Node: TSpkXMLNode);
|
|
procedure SaveToPascal(AList: TStrings);
|
|
procedure SaveToXML(Node: TSpkXMLNode);
|
|
procedure Reset(AStyle: TSpkStyle = spkOffice2007Blue);
|
|
|
|
procedure GetActiveColors(IsChecked: Boolean; out AFrameColor,
|
|
AInnerLightColor, AInnerDarkColor, AGradientFromColor,
|
|
AGradientToColor: TColor; out AGradientKind: TBackgroundKind;
|
|
ABrightenBy: Integer = 0);
|
|
procedure GetHotTrackColors(IsChecked: Boolean; out AFrameColor,
|
|
AInnerLightColor, AInnerDarkColor, AGradientFromColor,
|
|
AGradientToColor: TColor; out AGradientKind: TBackgroundKind;
|
|
ABrightenBy: Integer = 0);
|
|
procedure GetIdleColors(IsChecked: Boolean; out AFrameColor,
|
|
AInnerLightColor, AInnerDarkColor, AGradientFromColor,
|
|
AGradientToColor: TColor; out AGradientKind: TBackgroundKind;
|
|
ABrightenBy: Integer = 0);
|
|
|
|
published
|
|
property CaptionFont: TFont read FCaptionFont write SetCaptionFont;
|
|
property IdleFrameColor: TColor read FIdleFrameColor write SetIdleFrameColor;
|
|
property IdleGradientFromColor: TColor read FIdleGradientFromColor write SetIdleGradientFromColor;
|
|
property IdleGradientToColor: TColor read FIdleGradientToColor write SetIdleGradientToColor;
|
|
property IdleGradientType: TBackgroundKind read FIdleGradientType write SetIdleGradientType;
|
|
property IdleInnerLightColor: TColor read FIdleInnerLightColor write SetIdleInnerLightColor;
|
|
property IdleInnerDarkColor: TColor read FIdleInnerDarkColor write SetIdleInnerDarkColor;
|
|
property IdleCaptionColor: TColor read FIdleCaptionColor write SetIdleCaptionColor;
|
|
property HotTrackFrameColor: TColor read FHotTrackFrameColor write SetHotTrackFrameColor;
|
|
property HotTrackGradientFromColor: TColor read FHotTrackGradientFromColor write SetHotTrackGradientFromColor;
|
|
property HotTrackGradientToColor: TColor read FHotTrackGradientToColor write SetHotTrackGradientToColor;
|
|
property HotTrackGradientType: TBackgroundKind read FHotTrackGradientType write SetHotTrackGradientType;
|
|
property HotTrackInnerLightColor: TColor read FHotTrackInnerLightColor write SetHotTrackInnerLightColor;
|
|
property HotTrackInnerDarkColor: TColor read FHotTrackInnerDarkColor write SetHotTrackInnerDarkColor;
|
|
property HotTrackCaptionColor: TColor read FHotTrackCaptionColor write SetHotTrackCaptionColor;
|
|
property HotTrackBrightnessChange: Integer read FHotTrackBrightnessChange write SetHotTrackBrightnessChange default 20;
|
|
property ActiveFrameColor: TColor read FActiveFrameColor write SetActiveFrameColor;
|
|
property ActiveGradientFromColor: TColor read FActiveGradientFromColor write SetActiveGradientFromColor;
|
|
property ActiveGradientToColor: TColor read FActiveGradientToColor write SetActiveGradientToColor;
|
|
property ActiveGradientType: TBackgroundKind read FActiveGradientType write SetActiveGradientType;
|
|
property ActiveInnerLightColor: TColor read FActiveInnerLightColor write SetActiveInnerLightColor;
|
|
property ActiveInnerDarkColor: TColor read FActiveInnerDarkColor write SetActiveInnerDarkColor;
|
|
property ActiveCaptionColor: TColor read FActiveCaptionColor write SetActiveCaptionColor;
|
|
property Style: TSpkElementStyle read FStyle write SetStyle;
|
|
end;
|
|
|
|
|
|
{ TSpkToolbarAppearance }
|
|
|
|
TSpkToolbarAppearance = class;
|
|
|
|
TSpkToolbarAppearanceDispatch = class(TSpkBaseAppearanceDispatch)
|
|
private
|
|
FToolbarAppearance: TSpkToolbarAppearance;
|
|
public
|
|
constructor Create(AToolbarAppearance: TSpkToolbarAppearance);
|
|
procedure NotifyAppearanceChanged; override;
|
|
end;
|
|
|
|
TSpkToolbarAppearance = class(TPersistent)
|
|
private
|
|
FAppearanceDispatch: TSpkToolbarAppearanceDispatch;
|
|
FTab: TSpkTabAppearance;
|
|
FPane: TSpkPaneAppearance;
|
|
FElement: TSpkElementAppearance;
|
|
FDispatch: TSpkBaseAppearanceDispatch;
|
|
procedure SetElementAppearance(const Value: TSpkElementAppearance);
|
|
procedure SetPaneAppearance(const Value: TSpkPaneAppearance);
|
|
procedure SetTabAppearance(const Value: TSpkTabAppearance);
|
|
public
|
|
constructor Create(ADispatch: TSpkBaseAppearanceDispatch); reintroduce;
|
|
destructor Destroy; override;
|
|
procedure Assign(Source: TPersistent); override;
|
|
procedure NotifyAppearanceChanged;
|
|
procedure Reset(AStyle: TSpkStyle = spkOffice2007Blue);
|
|
procedure SaveToPascal(AList: TStrings);
|
|
procedure SaveToXML(Node: TSpkXMLNode);
|
|
procedure LoadFromXML(Node: TSpkXMLNode);
|
|
published
|
|
property Tab: TSpkTabAppearance read FTab write SetTabAppearance;
|
|
property Pane: TSpkPaneAppearance read FPane write SetPaneAppearance;
|
|
property Element: TSpkElementAppearance read FElement write SetElementAppearance;
|
|
end;
|
|
|
|
procedure SetDefaultFont(AFont: TFont);
|
|
|
|
|
|
implementation
|
|
|
|
uses
|
|
LCLIntf, LCLType, typinfo, spkGraphTools;
|
|
|
|
procedure SaveFontToPascal(AList: TStrings; AFont: TFont; AName: String);
|
|
var
|
|
sty: String;
|
|
begin
|
|
sty := '';
|
|
if fsBold in AFont.Style then sty := sty + 'fsBold,';
|
|
if fsItalic in AFont.Style then sty := sty + 'fsItalic,';
|
|
if fsUnderline in AFont.Style then sty := sty + 'fsUnderline,';
|
|
if fsStrikeout in AFont.Style then sty := sty + 'fsStrikeout,';
|
|
if sty <> '' then Delete(sty, Length(sty), 1);
|
|
with AList do begin
|
|
Add(AName + '.Name := ''' + AFont.Name + ''';');
|
|
Add(AName + '.Size := ' + IntToStr(AFont.Size) + ';');
|
|
Add(AName + '.Style := [' + sty + '];');
|
|
Add(AName + '.Color := $' + IntToHex(AFont.Color, 8) + ';');
|
|
end;
|
|
end;
|
|
|
|
{ TSpkBaseToolbarAppearance }
|
|
|
|
constructor TSpkTabAppearance.Create(ADispatch: TSpkBaseAppearanceDispatch);
|
|
begin
|
|
inherited Create;
|
|
FDispatch := ADispatch;
|
|
FTabHeaderFont := TFont.Create;
|
|
FTabHeaderFont.OnChange := TabHeaderFontChange;
|
|
Reset;
|
|
end;
|
|
|
|
destructor TSpkTabAppearance.Destroy;
|
|
begin
|
|
FTabHeaderFont.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TSpkTabAppearance.Assign(Source: TPersistent);
|
|
var
|
|
SrcAppearance: TSpkTabAppearance;
|
|
begin
|
|
if Source is TSpkTabAppearance then
|
|
begin
|
|
SrcAppearance := TSpkTabAppearance(Source);
|
|
FTabHeaderFont.Assign(SrcAppearance.TabHeaderFont);
|
|
FBorderColor := SrcAppearance.BorderColor;
|
|
FGradientFromColor := SrcAppearance.GradientFromColor;
|
|
FGradientToColor := SrcAppearance.GradientToColor;
|
|
FGradientType := SrcAppearance.GradientType;
|
|
FInactiveHeaderFontColor := SrcAppearance.InactiveTabHeaderFontColor;
|
|
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end else
|
|
raise AssignException.Create('TSpkToolbarAppearance.Assign: Cannot assign the object '+Source.ClassName+' to TSpkToolbarAppearance!');
|
|
end;
|
|
|
|
procedure TSpkTabAppearance.LoadFromXML(Node: TSpkXMLNode);
|
|
var
|
|
Subnode: TSpkXMLNode;
|
|
begin
|
|
if not Assigned(Node) then
|
|
exit;
|
|
|
|
Subnode := Node['TabHeaderFont',false];
|
|
if Assigned(Subnode) then
|
|
TSpkXMLTools.Load(Subnode, FTabHeaderFont);
|
|
|
|
Subnode := Node['BorderColor',false];
|
|
if Assigned(Subnode) then
|
|
FBorderColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['GradientFromColor',false];
|
|
if Assigned(Subnode) then
|
|
FGradientFromColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['GradientToColor',false];
|
|
if Assigned(Subnode) then
|
|
FGradientToColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['GradientType',false];
|
|
if Assigned(Subnode) then
|
|
FGradientType := TBackgroundKind(Subnode.TextAsInteger);
|
|
|
|
Subnode := Node['InactiveTabHeaderFontColor', false];
|
|
if Assigned(Subnode) then
|
|
FInactiveHeaderFontColor := Subnode.TextAsColor;
|
|
end;
|
|
|
|
procedure TSpkTabAppearance.Reset(AStyle: TSpkStyle);
|
|
begin
|
|
SetDefaultFont(FTabHeaderFont);
|
|
|
|
case AStyle of
|
|
spkOffice2007Blue:
|
|
begin
|
|
FTabHeaderFont.Color := rgb(21, 66, 139);
|
|
FBorderColor := rgb(141, 178, 227);
|
|
FGradientFromColor := rgb(222, 232, 245);
|
|
FGradientToColor := rgb(199, 216, 237);
|
|
FGradientType := bkConcave;
|
|
FInactiveHeaderFontColor := FTabHeaderFont.Color;
|
|
end;
|
|
|
|
spkOffice2007Silver,
|
|
spkOffice2007SilverTurquoise:
|
|
begin
|
|
FTabHeaderFont.Style := [];
|
|
FTabHeaderFont.Color := $007A534C;
|
|
FBorderColor := $00BEBEBE;
|
|
FGradientFromColor := $00F4F2F2;
|
|
FGradientToColor := $00EFE6E1;
|
|
FGradientType := bkConcave;
|
|
FInactiveHeaderFontColor := $007A534C;
|
|
end;
|
|
|
|
spkMetroLight:
|
|
begin
|
|
FTabHeaderFont.Style := [];
|
|
FTabHeaderFont.Color := $0095572A;
|
|
FBorderColor := $00D2D0CF;
|
|
FGradientFromColor := $00F1F1F1;
|
|
FGradientToColor := $00F1F1F1;
|
|
FGradientType := bkSolid;
|
|
FInactiveHeaderFontColor := $00696969;
|
|
end;
|
|
|
|
spkMetroDark:
|
|
begin
|
|
FTabHeaderFont.Style := [];
|
|
FTabHeaderFont.Color := $00FFFFFF;
|
|
FBorderColor := $00000000;
|
|
FGradientFromColor := $00464646;
|
|
FGradientToColor := $00464646;
|
|
FGradientType := bkSolid;
|
|
FInactiveHeaderFontColor := $00787878;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TSpkTabAppearance.SaveToPascal(AList: TStrings);
|
|
begin
|
|
with AList do begin
|
|
Add(' with Tab do begin');
|
|
SaveFontToPascal(AList, FTabHeaderFont, ' TabHeaderFont');
|
|
Add(' BorderColor := $' + IntToHex(FBorderColor, 8) + ';');
|
|
Add(' GradientFromColor := $' + IntToHex(FGradientFromColor, 8) + ';');
|
|
Add(' GradientToColor := $' + IntToHex(FGradientToColor, 8) + ';');
|
|
Add(' GradientType := ' + GetEnumName(TypeInfo(TBackgroundKind), ord(FGradientType)) + ';');
|
|
Add(' InactiveHeaderFontColor := $' + IntToHex(FInactiveHeaderFontColor, 8) + ';');
|
|
Add(' end;');
|
|
end;
|
|
end;
|
|
|
|
procedure TSpkTabAppearance.SaveToXML(Node: TSpkXMLNode);
|
|
var
|
|
Subnode: TSpkXMLNode;
|
|
begin
|
|
if not(assigned(Node)) then
|
|
exit;
|
|
|
|
Subnode := Node['TabHeaderFont',true];
|
|
TSpkXMLTools.Save(Subnode, FTabHeaderFont);
|
|
|
|
Subnode := Node['BorderColor',true];
|
|
Subnode.TextAsColor := FBorderColor;
|
|
|
|
Subnode := Node['GradientFromColor',true];
|
|
Subnode.TextAsColor := FGradientFromColor;
|
|
|
|
Subnode := Node['GradientToColor',true];
|
|
Subnode.TextAsColor := FGradientToColor;
|
|
|
|
Subnode := Node['GradientType',true];
|
|
Subnode.TextAsInteger := integer(FGradientType);
|
|
|
|
Subnode := Node['InactiveTabHeaderFontColor', true];
|
|
Subnode.TextAsColor := FInactiveHeaderFontColor;
|
|
end;
|
|
|
|
procedure TSpkTabAppearance.SetBorderColor(const Value: TColor);
|
|
begin
|
|
FBorderColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkTabAppearance.SetGradientFromColor(const Value: TColor);
|
|
begin
|
|
FGradientFromColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkTabAppearance.SetGradientToColor(const Value: TColor);
|
|
begin
|
|
FGradientToColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkTabAppearance.SetGradientType(const Value: TBackgroundKind);
|
|
begin
|
|
FGradientType := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkTabAppearance.SetHeaderFont(const Value: TFont);
|
|
begin
|
|
FTabHeaderFont.Assign(Value);
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkTabAppearance.SetInactiveHeaderFontColor(const Value: TColor);
|
|
begin
|
|
FInactiveHeaderFontColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkTabAppearance.TabHeaderFontChange(Sender: TObject);
|
|
begin
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
|
|
{ TSpkPaneAppearance }
|
|
|
|
constructor TSpkPaneAppearance.Create(ADispatch: TSpkBaseAppearanceDispatch);
|
|
begin
|
|
inherited Create;
|
|
FDispatch := ADispatch;
|
|
FCaptionFont := TFont.Create;
|
|
FCaptionFont.OnChange := CaptionFontChange;
|
|
FHotTrackBrightnessChange := 20;
|
|
FStyle := psRectangleEtched;
|
|
Reset;
|
|
end;
|
|
|
|
destructor TSpkPaneAppearance.Destroy;
|
|
begin
|
|
FCaptionFont.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.Assign(Source: TPersistent);
|
|
var
|
|
SrcAppearance: TSpkPaneAppearance;
|
|
begin
|
|
if Source is TSpkPaneAppearance then
|
|
begin
|
|
SrcAppearance := TSpkPaneAppearance(Source);
|
|
|
|
FCaptionFont.Assign(SrcAppearance.CaptionFont);
|
|
FBorderDarkColor := SrcAppearance.BorderDarkColor;
|
|
FBorderLightColor := SrcAppearance.BorderLightColor;
|
|
FCaptionBgColor := SrcAppearance.CaptionBgColor;
|
|
FGradientFromColor := SrcAppearance.GradientFromColor;
|
|
FGradientToColor := SrcAppearance.GradientToColor;
|
|
FGradientType := SrcAppearance.GradientType;
|
|
FHotTrackBrightnessChange := SrcAppearance.HotTrackBrightnessChange;
|
|
FStyle := SrcAppearance.Style;
|
|
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end else
|
|
raise AssignException.Create('TSpkPaneAppearance.Assign: Cannot assign the class '+Source.ClassName+' to TSpkPaneAppearance!');
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.CaptionFontChange(Sender: TObject);
|
|
begin
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.LoadFromXML(Node: TSpkXMLNode);
|
|
var
|
|
Subnode: TSpkXMLNode;
|
|
begin
|
|
if not(Assigned(Node)) then
|
|
exit;
|
|
|
|
Subnode := Node['CaptionFont', false];
|
|
if Assigned(Subnode) then
|
|
TSpkXMLTools.Load(Subnode, FCaptionFont);
|
|
|
|
Subnode := Node['BorderDarkColor', false];
|
|
if Assigned(Subnode) then
|
|
FBorderDarkColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['BorderLightColor', false];
|
|
if Assigned(Subnode) then
|
|
FBorderLightColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['CaptionBgColor', false];
|
|
if Assigned(Subnode) then
|
|
FCaptionBgColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['GradientFromColor', false];
|
|
if Assigned(Subnode) then
|
|
FGradientFromColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['GradientToColor', false];
|
|
if Assigned(Subnode) then
|
|
FGradientToColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['GradientType', false];
|
|
if Assigned(Subnode) then
|
|
FGradientType := TBackgroundKind(Subnode.TextAsInteger);
|
|
|
|
Subnode := Node['HotTrackBrightnessChange', false];
|
|
if Assigned(Subnode) then
|
|
FHotTrackBrightnessChange := Subnode.TextAsInteger;
|
|
|
|
Subnode := Node['Style', false];
|
|
if Assigned(Subnode) then
|
|
FStyle := TSpkPaneStyle(SubNode.TextAsInteger);
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.Reset(AStyle: TSpkStyle = spkOffice2007Blue);
|
|
begin
|
|
SetDefaultFont(FCaptionFont);
|
|
|
|
case AStyle of
|
|
spkOffice2007Blue:
|
|
begin
|
|
FCaptionFont.Style := [];
|
|
FCaptionFont.Color := rgb(21, 66, 139);
|
|
FBorderDarkColor := rgb(158, 190, 218);
|
|
FBorderLightColor := rgb(237, 242, 248);
|
|
FCaptionBgColor := rgb(194, 217, 241);
|
|
FGradientFromColor := rgb(222, 232, 245);
|
|
FGradientToColor := rgb(199, 216, 237);
|
|
FGradientType := bkConcave;
|
|
FHotTrackBrightnessChange := 20;
|
|
FStyle := psRectangleEtched;
|
|
end;
|
|
|
|
spkOffice2007Silver,
|
|
spkOffice2007SilverTurquoise:
|
|
begin
|
|
FCaptionFont.Style := [];
|
|
FCaptionFont.Color := $00363636;
|
|
FBorderDarkColor := $00A6A6A6;
|
|
FBorderLightColor := $00FFFFFF;
|
|
FCaptionBgColor := $00E4E4E4;
|
|
FGradientFromColor := $00F8F8F8;
|
|
FGradientToColor := $00E9E9E9;
|
|
FGradientType := bkConcave;
|
|
FHotTrackBrightnessChange := 20;
|
|
FStyle := psRectangleEtched;
|
|
end;
|
|
|
|
spkMetroLight:
|
|
begin
|
|
FCaptionFont.Style := [];
|
|
FCaptionFont.Color := $00696969;
|
|
FBorderDarkColor := $00D2D0CF;
|
|
FBorderLightColor := $00F8F2ED;
|
|
FCaptionBgColor := $00F1F1F1;
|
|
FGradientFromColor := $00F1F1F1;
|
|
FGradientToColor := $00F1F1F1;
|
|
FGradientType := bkSolid;
|
|
FHotTrackBrightnessChange := 0;
|
|
FStyle := psDividerFlat;
|
|
end;
|
|
|
|
spkMetroDark:
|
|
begin
|
|
FCaptionFont.Style := [];
|
|
FCaptionFont.Color := $00FFFFFF;
|
|
FBorderDarkColor := $008C8482;
|
|
FBorderLightColor := $00A29D9B;
|
|
FCaptionBgColor := $00464646;
|
|
FGradientFromColor := $00464646;
|
|
FGradientToColor := $00F1F1F1;
|
|
FGradientType := bkSolid;
|
|
FHotTrackBrightnessChange := 0;
|
|
FStyle := psDividerFlat;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.SaveToPascal(AList: TStrings);
|
|
begin
|
|
with AList do begin
|
|
Add(' with Pane do begin');
|
|
SaveFontToPascal(AList, FCaptionFont, ' CaptionFont');
|
|
Add(' BorderDarkColor := $' + IntToHex(FBorderDarkColor, 8) + ';');
|
|
Add(' BorderLightColor := $' + IntToHex(FBorderLightColor, 8) + ';');
|
|
Add(' CaptionBgColor := $' + IntToHex(FcaptionBgColor, 8) + ';');
|
|
Add(' GradientFromColor := $' + IntToHex(FGradientFromColor, 8) + ';');
|
|
Add(' GradientToColor := $' + IntToHex(FGradientToColor, 8) + ';');
|
|
Add(' GradientType := ' + GetEnumName(TypeInfo(TBackgroundKind), ord(FGradientType)) + ';');
|
|
Add(' HotTrackBrightnessChange = ' + IntToStr(FHotTrackBrightnessChange) + ';');
|
|
Add(' Style := ' + GetEnumName(TypeInfo(TSpkPaneStyle), ord(FStyle)) +';');
|
|
Add(' end;');
|
|
end;
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.SaveToXML(Node: TSpkXMLNode);
|
|
var
|
|
Subnode: TSpkXMLNode;
|
|
begin
|
|
if not Assigned(Node) then
|
|
exit;
|
|
|
|
Subnode := Node['CaptionFont',true];
|
|
TSpkXMLTools.Save(Subnode, FCaptionFont);
|
|
|
|
Subnode := Node['BorderDarkColor',true];
|
|
Subnode.TextAsColor := FBorderDarkColor;
|
|
|
|
Subnode := Node['BorderLightColor',true];
|
|
Subnode.TextAsColor := FBorderLightColor;
|
|
|
|
Subnode := Node['CaptionBgColor',true];
|
|
Subnode.TextAsColor := FCaptionBgColor;
|
|
|
|
Subnode := Node['GradientFromColor',true];
|
|
Subnode.TextAsColor := FGradientFromColor;
|
|
|
|
Subnode := Node['GradientToColor',true];
|
|
Subnode.TextAsColor := FGradientToColor;
|
|
|
|
Subnode := Node['GradientType',true];
|
|
Subnode.TextAsInteger := integer(FGradientType);
|
|
|
|
Subnode := Node['HotTrackBrightnessChange',true];
|
|
Subnode.TextAsInteger := FHotTrackBrightnessChange;
|
|
|
|
Subnode := Node['Style', true];
|
|
Subnode.TextAsInteger := integer(FStyle);
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.SetBorderDarkColor(const Value: TColor);
|
|
begin
|
|
FBorderDarkColor := Value;
|
|
if Assigned(FDispatch) then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.SetBorderLightColor(const Value: TColor);
|
|
begin
|
|
FBorderLightColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.SetCaptionBgColor(const Value: TColor);
|
|
begin
|
|
FCaptionBgColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.SetCaptionFont(const Value: TFont);
|
|
begin
|
|
FCaptionFont.Assign(Value);
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.SetGradientFromColor(const Value: TColor);
|
|
begin
|
|
FGradientFromColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.SetGradientToColor(const Value: TColor);
|
|
begin
|
|
FGradientToColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.SetGradientType(const Value: TBackgroundKind);
|
|
begin
|
|
FGradientType := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.SetHotTrackBrightnessChange(const Value: Integer);
|
|
begin
|
|
FHotTrackBrightnessChange := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkPaneAppearance.SetStyle(const Value: TSpkPaneStyle);
|
|
begin
|
|
FStyle := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
|
|
{ TSpkElementAppearance }
|
|
|
|
constructor TSpkElementAppearance.Create(ADispatch: TSpkBaseAppearanceDispatch);
|
|
begin
|
|
inherited Create;
|
|
FDispatch := ADispatch;
|
|
FCaptionFont := TFont.Create;
|
|
FCaptionFont.OnChange := CaptionFontChange;
|
|
FHotTrackBrightnessChange := 40;
|
|
Reset;
|
|
end;
|
|
|
|
destructor TSpkElementAppearance.Destroy;
|
|
begin
|
|
FCaptionFont.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.Assign(Source: TPersistent);
|
|
var
|
|
SrcAppearance: TSpkElementAppearance;
|
|
begin
|
|
if Source is TSpkElementAppearance then
|
|
begin
|
|
SrcAppearance := TSpkElementAppearance(Source);
|
|
|
|
FCaptionFont.Assign(SrcAppearance.CaptionFont);
|
|
FIdleFrameColor := SrcAppearance.IdleFrameColor;
|
|
FIdleGradientFromColor := SrcAppearance.IdleGradientFromColor;
|
|
FIdleGradientToColor := SrcAppearance.IdleGradientToColor;
|
|
FIdleGradientType := SrcAppearance.IdleGradientType;
|
|
FIdleInnerLightColor := SrcAppearance.IdleInnerLightColor;
|
|
FIdleInnerDarkColor := SrcAppearance.IdleInnerDarkColor;
|
|
FIdleCaptionColor := SrcAppearance.IdleCaptionColor;
|
|
FHotTrackFrameColor := SrcAppearance.HotTrackFrameColor;
|
|
FHotTrackGradientFromColor := SrcAppearance.HotTrackGradientFromColor;
|
|
FHotTrackGradientToColor := SrcAppearance.HotTrackGradientToColor;
|
|
FHotTrackGradientType := SrcAppearance.HotTrackGradientType;
|
|
FHotTrackInnerLightColor := SrcAppearance.HotTrackInnerLightColor;
|
|
FHotTrackInnerDarkColor := SrcAppearance.HotTrackInnerDarkColor;
|
|
FHotTrackCaptionColor := SrcAppearance.HotTrackCaptionColor;
|
|
FHotTrackBrightnessChange := SrcAppearance.HotTrackBrightnessChange;
|
|
FActiveFrameColor := SrcAppearance.ActiveFrameColor;
|
|
FActiveGradientFromColor := SrcAppearance.ActiveGradientFromColor;
|
|
FActiveGradientToColor := SrcAppearance.ActiveGradientToColor;
|
|
FActiveGradientType := SrcAppearance.ActiveGradientType;
|
|
FActiveInnerLightColor := SrcAppearance.ActiveInnerLightColor;
|
|
FActiveInnerDarkColor := SrcAppearance.ActiveInnerDarkColor;
|
|
FActiveCaptionColor := SrcAppearance.ActiveCaptionColor;
|
|
FStyle := SrcAppearance.Style;
|
|
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end else
|
|
raise AssignException.Create('TSpkElementAppearance.Assign: Cannot assign the objecct '+Source.ClassName+' to TSpkElementAppearance!');
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.CaptionFontChange(Sender: TObject);
|
|
begin
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.GetActiveColors(IsChecked: Boolean;
|
|
out AFrameColor, AInnerLightColor, AInnerDarkColor, AGradientFromColor,
|
|
AGradientToColor: TColor; out AGradientKind: TBackgroundKind;
|
|
ABrightenBy: Integer = 0);
|
|
const
|
|
DELTA = -20;
|
|
begin
|
|
AFrameColor := FActiveFrameColor;
|
|
AInnerLightColor := FActiveInnerLightColor;
|
|
AInnerDarkColor := FActiveInnerDarkColor;
|
|
AGradientFromColor := FActiveGradientFromColor;
|
|
AGradientToColor := FActiveGradientToColor;
|
|
AGradientKind := FActiveGradientType;
|
|
|
|
if IsChecked then
|
|
ABrightenBy := DELTA + ABrightenBy;
|
|
|
|
if ABrightenBy <> 0 then
|
|
begin
|
|
AFrameColor := TColorTools.Brighten(AFrameColor, ABrightenBy);
|
|
AInnerLightColor := TColorTools.Brighten(AInnerLightColor, ABrightenBy);
|
|
AInnerDarkColor := TColortools.Brighten(AInnerDarkColor, ABrightenBy);
|
|
AGradientFromColor := TColorTools.Brighten(AGradientFromColor, ABrightenBy);
|
|
AGradientToColor := TColorTools.Brighten(AGradientToColor, ABrightenBy);
|
|
end;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.GetIdleColors(IsChecked: Boolean;
|
|
out AFrameColor, AInnerLightColor, AInnerDarkColor, AGradientFromColor,
|
|
AGradientToColor: TColor; out AGradientKind: TBackgroundKind;
|
|
ABrightenBy: Integer = 0);
|
|
const
|
|
DELTA = 10;
|
|
begin
|
|
if IsChecked then
|
|
begin
|
|
ABrightenBy := DELTA + ABrightenBy;
|
|
AFrameColor := FActiveFrameColor;
|
|
AInnerLightColor := FActiveInnerLightColor;
|
|
AInnerDarkColor := FActiveInnerDarkColor;
|
|
AGradientFromColor := FActiveGradientFromColor;
|
|
AGradientToColor := FActiveGradientToColor;
|
|
AGradientKind := FActiveGradientType;
|
|
end else
|
|
begin
|
|
AFrameColor := FIdleFrameColor;
|
|
AInnerLightColor := FIdleInnerLightColor;
|
|
AInnerDarkColor := FIdleInnerDarkColor;
|
|
AGradientFromColor := FIdleGradientFromColor;
|
|
AGradientToColor := FIdleGradientToColor;
|
|
AGradientKind := FIdleGradientType;
|
|
end;
|
|
|
|
if ABrightenBy <> 0 then
|
|
begin
|
|
AFrameColor := TColorTools.Brighten(AFrameColor, ABrightenBy);
|
|
AInnerLightColor := TColorTools.Brighten(AInnerLightColor, ABrightenBy);
|
|
AInnerDarkColor := TColorTools.Brighten(AInnerLightColor, ABrightenBy);
|
|
AGradientFromColor := TColorTools.Brighten(AGradientFromColor, ABrightenBy);
|
|
AGradientToColor := TColorTools.Brighten(AGradientToColor, ABrightenBy);
|
|
end;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.GetHotTrackColors(IsChecked: Boolean;
|
|
out AFrameColor, AInnerLightColor, AInnerDarkColor, AGradientFromColor,
|
|
AGradientToColor: TColor; out AGradientKind: TBackgroundKind;
|
|
ABrightenBy: Integer = 0);
|
|
const
|
|
DELTA = 20;
|
|
begin
|
|
if IsChecked then begin
|
|
ABrightenBy := ABrightenBy + DELTA;
|
|
AFrameColor := FActiveFrameColor;
|
|
AInnerLightColor := FActiveInnerLightColor;
|
|
AInnerDarkColor := FActiveInnerDarkColor;
|
|
AGradientFromColor := FActiveGradientFromColor;
|
|
AGradientToColor := FActiveGradientToColor;
|
|
AGradientKind := FActiveGradientType;
|
|
end else begin
|
|
AFrameColor := FHotTrackFrameColor;
|
|
AInnerLightColor := FHotTrackInnerLightColor;
|
|
AInnerDarkColor := FHotTrackInnerDarkColor;
|
|
AGradientFromColor := FHotTrackGradientFromColor;
|
|
AGradientToColor := FHotTrackGradientToColor;
|
|
AGradientKind := FHotTrackGradientType;
|
|
end;
|
|
if ABrightenBy <> 0 then begin
|
|
AFrameColor := TColorTools.Brighten(AFrameColor, ABrightenBy);
|
|
AInnerLightColor := TColorTools.Brighten(AInnerLightColor, ABrightenBy);
|
|
AInnerDarkColor := TColortools.Brighten(AInnerDarkColor, ABrightenBy);
|
|
AGradientFromColor := TColorTools.Brighten(AGradientFromColor, ABrightenBy);
|
|
AGradientToColor := TColorTools.Brighten(AGradientToColor, ABrightenBy);
|
|
end;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.LoadFromXML(Node: TSpkXMLNode);
|
|
var
|
|
Subnode: TSpkXMLNode;
|
|
begin
|
|
if not Assigned(Node) then
|
|
exit;
|
|
|
|
Subnode := Node['CaptionFont', false];
|
|
if Assigned(Subnode) then
|
|
TSpkXMLTools.Load(Subnode, FCaptionFont);
|
|
|
|
// Idle
|
|
Subnode := Node['IdleFrameColor', false];
|
|
if Assigned(Subnode) then
|
|
FIdleFrameColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['IdleGradientFromColor', false];
|
|
if Assigned(Subnode) then
|
|
FIdleGradientFromColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['IdleGradientToColor', false];
|
|
if Assigned(Subnode) then
|
|
FIdleGradientToColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['IdleGradientType', false];
|
|
if Assigned(Subnode) then
|
|
FIdleGradientType := TBackgroundKind(Subnode.TextAsInteger);
|
|
|
|
Subnode := Node['IdleInnerLightColor', false];
|
|
if Assigned(Subnode) then
|
|
FIdleInnerLightColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['IdleInnerDarkColor', false];
|
|
if Assigned(Subnode) then
|
|
FIdleInnerDarkColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['IdleCaptionColor', false];
|
|
if Assigned(Subnode) then
|
|
FIdleCaptionColor := Subnode.TextAsColor;
|
|
|
|
// HotTrack
|
|
Subnode := Node['HottrackFrameColor', false];
|
|
if Assigned(Subnode) then
|
|
FHottrackFrameColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['HottrackGradientFromColor', false];
|
|
if Assigned(Subnode) then
|
|
FHottrackGradientFromColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['HottrackGradientToColor', false];
|
|
if Assigned(Subnode) then
|
|
FHottrackGradientToColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['HottrackGradientType', false];
|
|
if Assigned(Subnode) then
|
|
FHottrackGradientType := TBackgroundKind(Subnode.TextAsInteger);
|
|
|
|
Subnode := Node['HottrackInnerLightColor', false];
|
|
if Assigned(Subnode) then
|
|
FHottrackInnerLightColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['HottrackInnerDarkColor', false];
|
|
if Assigned(Subnode) then
|
|
FHottrackInnerDarkColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['HottrackCaptionColor', false];
|
|
if Assigned(Subnode) then
|
|
FHottrackCaptionColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['HottrackBrightnessChange', false];
|
|
if Assigned(Subnode) then
|
|
FHottrackBrightnessChange := Subnode.TextAsInteger;
|
|
|
|
// Active
|
|
Subnode := Node['ActiveFrameColor', false];
|
|
if Assigned(Subnode) then
|
|
FActiveFrameColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['ActiveGradientFromColor', false];
|
|
if Assigned(Subnode) then
|
|
FActiveGradientFromColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['ActiveGradientToColor', false];
|
|
if Assigned(Subnode) then
|
|
FActiveGradientToColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['ActiveGradientType', false];
|
|
if Assigned(Subnode) then
|
|
FActiveGradientType := TBackgroundKind(Subnode.TextAsInteger);
|
|
|
|
Subnode := Node['ActiveInnerLightColor', false];
|
|
if Assigned(Subnode) then
|
|
FActiveInnerLightColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['ActiveInnerDarkColor', false];
|
|
if Assigned(Subnode) then
|
|
FActiveInnerDarkColor := Subnode.TextAsColor;
|
|
|
|
Subnode := Node['ActiveCaptionColor', false];
|
|
if Assigned(Subnode) then
|
|
FActiveCaptionColor := Subnode.TextAsColor;
|
|
|
|
// Other
|
|
Subnode := Node['Style', false];
|
|
if Assigned(SubNode) then
|
|
FStyle := TSpkElementStyle(Subnode.TextAsInteger);
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.Reset(AStyle: TSpkStyle = spkOffice2007Blue);
|
|
begin
|
|
SetDefaultFont(FCaptionFont);
|
|
|
|
case AStyle of
|
|
spkOffice2007Blue:
|
|
begin
|
|
FIdleFrameColor := rgb(155, 183, 224);
|
|
FIdleGradientFromColor := rgb(200, 219, 238);
|
|
FIdleGradientToColor := rgb(188, 208, 233);
|
|
FIdleGradientType := bkConcave;
|
|
FIdleInnerLightColor := rgb(213, 227, 241);
|
|
FIdleInnerDarkColor := rgb(190, 211, 236);
|
|
FIdleCaptionColor := rgb(86, 125, 177);
|
|
FHotTrackFrameColor := rgb(221, 207, 155);
|
|
FHotTrackGradientFromColor := rgb(255, 252, 218);
|
|
FHotTrackGradientToColor := rgb(255, 215, 77);
|
|
FHotTrackGradientType := bkConcave;
|
|
FHotTrackInnerLightColor := rgb(255, 241, 197);
|
|
FHotTrackInnerDarkColor := rgb(216, 194, 122);
|
|
FHotTrackCaptionColor := rgb(111, 66, 135);
|
|
FHotTrackBrightnessChange := 40;
|
|
FActiveFrameColor := rgb(139, 118, 84);
|
|
FActiveGradientFromColor := rgb(254, 187, 108);
|
|
FActiveGradientToColor := rgb(252, 146, 61);
|
|
FActiveGradientType := bkConcave;
|
|
FActiveInnerLightColor := rgb(252, 169, 14);
|
|
FActiveInnerDarkColor := rgb(252, 169, 14);
|
|
FActiveCaptionColor := rgb(110, 66, 128);
|
|
FStyle := esRounded;
|
|
end;
|
|
|
|
spkOffice2007Silver,
|
|
spkOffice2007SilverTurquoise:
|
|
begin
|
|
FCaptionFont.Style := [];
|
|
FCaptionFont.Color := $008B4215;
|
|
FIdleFrameColor := $00B8B1A9;
|
|
FIdleGradientFromColor := $00F4F4F2;
|
|
FIdleGradientToColor := $00E6E5E3;
|
|
FIdleGradientType := bkConcave;
|
|
FIdleInnerDarkColor := $00C7C0BA;
|
|
FIdleInnerLightColor := $00F6F2F0;
|
|
FIdleCaptionColor := $0060655F;
|
|
FHotTrackBrightnessChange := 40;
|
|
FHotTrackFrameColor := $009BCFDD;
|
|
FHotTrackGradientFromColor := $00DAFCFF;
|
|
FHotTrackGradientToColor := $004DD7FF;
|
|
FHotTrackGradientType := bkConcave;
|
|
FHotTrackInnerDarkColor := $007AC2D8;
|
|
FHotTrackInnerLightColor := $00C5F1FF;
|
|
FHotTrackCaptionColor := $0087426F;
|
|
if AStyle = spkOffice2007SilverTurquoise then
|
|
begin
|
|
FHotTrackFrameColor := $009E7D0E;
|
|
FHotTrackGradientFromColor := $00FBF1D0;
|
|
FHotTrackGradientToColor := $00F4DD8A;
|
|
FHotTrackInnerDarkColor := $00C19A11;
|
|
FHotTrackInnerLightColor := $00FAEFC9;
|
|
end;
|
|
FActiveFrameColor := $0054768B;
|
|
FActiveGradientFromColor := $006CBBFE;
|
|
FActiveGradientToColor := $003D92FC;
|
|
FActiveGradientType := bkConcave;
|
|
FActiveInnerDarkColor := $000EA9FC;
|
|
FActiveInnerLightColor := $000EA9FC;
|
|
FActiveCaptionColor := $0080426E;
|
|
if AStyle = spkOffice2007SilverTurquoise then
|
|
begin
|
|
FActiveFrameColor := $0077620B;
|
|
FActiveGradientFromColor := $00F4DB82;
|
|
FActiveGradientToColor := $00ECC53E;
|
|
FActiveInnerDarkColor := $00735B0B;
|
|
FActiveInnerLightColor := $00F3D87A;
|
|
end;
|
|
FStyle := esRounded;
|
|
end;
|
|
|
|
spkMetroLight:
|
|
begin
|
|
FCaptionFont.Style := [];
|
|
FCaptionFont.Color := $003F3F3F;
|
|
FIdleFrameColor := $00CDCDCD;
|
|
FIdleGradientFromColor := $00DFDFDF;
|
|
FIdleGradientToColor := $00DFDFDF;
|
|
FIdleGradientType := bkSolid;
|
|
FIdleInnerDarkColor := $00CDCDCD;
|
|
FIdleInnerLightColor := $00EBEBEB;
|
|
FIdleCaptionColor := $00696969;
|
|
FHotTrackFrameColor := $00F9CEA4;
|
|
FHotTrackGradientFromColor := $00F7EFE8;
|
|
FHotTrackGradientToColor := $00F7EFE8;
|
|
FHotTrackGradientType := bkSolid;
|
|
FHotTrackInnerDarkColor := $00F7EFE8;
|
|
FHotTrackInnerLightColor := $00F7EFE8;
|
|
FHotTrackCaptionColor := $003F3F3F;
|
|
FHotTrackBrightnessChange := 20;
|
|
FActiveFrameColor := $00E4A262;
|
|
FActiveGradientFromColor := $00F7E0C9;
|
|
FActiveGradientToColor := $00F7E0C9;
|
|
FActiveGradientType := bkSolid;
|
|
FActiveInnerDarkColor := $00F7E0C9;
|
|
FActiveInnerLightColor := $00F7E0C9;
|
|
FActiveCaptionColor := $002C2C2C;
|
|
FStyle := esRectangle;
|
|
end;
|
|
|
|
spkMetroDark:
|
|
begin
|
|
FCaptionFont.Style := [];
|
|
FCaptionFont.Color := $003F3F3F;
|
|
FIdleFrameColor := $008C8482;
|
|
FIdleGradientFromColor := $00444444;
|
|
FIdleGradientToColor := $00444444;
|
|
FIdleGradientType := bkSolid;
|
|
FIdleInnerDarkColor := $008C8482;
|
|
FIdleInnerLightColor := $00444444;
|
|
FIdleCaptionColor := $00B6B6B6;
|
|
FHotTrackFrameColor := $00C4793C;
|
|
FHotTrackGradientFromColor := $00805B3D;
|
|
FHotTrackGradientToColor := $00805B3D;
|
|
FHotTrackGradientType := bkSolid;
|
|
FHotTrackInnerDarkColor := $00805B3D;
|
|
FHotTrackInnerLightColor := $00805B3D;
|
|
FHotTrackCaptionColor := $00F2F2F2;
|
|
FHotTrackBrightnessChange := 10;
|
|
FActiveFrameColor := $00000000;
|
|
FActiveGradientFromColor := $00000000;
|
|
FActiveGradientToColor := $00000000;
|
|
FActiveGradientType := bkSolid;
|
|
FActiveInnerDarkColor := $00000000;
|
|
FActiveInnerLightColor := $00000000;
|
|
FActiveCaptionColor := $00E4E4E4;
|
|
FStyle := esRectangle;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SaveToPascal(AList: TStrings);
|
|
begin
|
|
with AList do begin
|
|
Add(' with Element do begin');
|
|
SaveFontToPascal(AList, FCaptionFont, ' CaptionFont');
|
|
|
|
Add(' IdleFrameColor := $' + IntToHex(FIdleFrameColor, 8) + ';');
|
|
Add(' IdleGradientFromColor := $' + IntToHex(FIdleGradientFromColor, 8) + ';');
|
|
Add(' IdleGradientToColor := $' + IntToHex(FIdleGradientToColor, 8) + ';');
|
|
Add(' IdleGradientType := ' + GetEnumName(TypeInfo(TBackgroundKind), ord(FIdleGradientType)) + ';');
|
|
Add(' IdleInnerDarkColor := $' + IntToHex(FIdleInnerDarkColor, 8) + ';');
|
|
Add(' IdleInnerLightColor := $' + IntToHex(FIdleInnerLightColor, 8) + ';');
|
|
Add(' IdleCaptionColor := $' + IntToHex(FIdleCaptionColor, 8) + ';');
|
|
|
|
Add(' HotTrackFrameColor := $' + IntToHex(FHotTrackFrameColor, 8) + ';');
|
|
Add(' HotTrackGradientFromColor := $' + IntToHex(FHotTrackGradientFromColor, 8) + ';');
|
|
Add(' HotTrackGradientToColor := $' + IntToHex(FHotTrackGradientToColor, 8) + ';');
|
|
Add(' HotTrackGradientType := ' + GetEnumName(TypeInfo(TBackgroundKind), ord(FHotTrackGradientType)) + ';');
|
|
Add(' HotTrackInnerDarkColor := $' + IntToHex(FHotTrackInnerDarkColor, 8) + ';');
|
|
Add(' HotTrackInnerLightColor := $' + IntToHex(FHotTrackInnerLightColor, 8) + ';');
|
|
Add(' HotTrackCaptionColor := $' + IntToHex(FHotTrackCaptionColor, 8) + ';');
|
|
Add(' HotTrackBrightnessChange := ' + IntToStr(FHotTrackBrightnessChange) + ';');
|
|
|
|
Add(' ActiveFrameColor := $' + IntToHex(FActiveFrameColor, 8) + ';');
|
|
Add(' ActiveGradientFromColor := $' + IntToHex(FActiveGradientFromColor, 8) + ';');
|
|
Add(' ActiveGradientToColor := $' + IntToHex(FActiveGradientToColor, 8) + ';');
|
|
Add(' ActiveGradientType := ' + GetEnumName(TypeInfo(TBackgroundKind), ord(FActiveGradientType)) + ';');
|
|
Add(' ActiveInnerDarkColor := $' + IntToHex(FActiveInnerDarkColor, 8) + ';');
|
|
Add(' ActiveInnerLightColor := $' + IntToHex(FActiveInnerLightColor, 8) + ';');
|
|
Add(' ActiveCaptionColor := $' + IntToHex(FActiveCaptionColor, 8) + ';');
|
|
|
|
Add(' Style := ' + GetEnumName(TypeInfo(TSpkElementStyle), ord(FStyle)) + ';');
|
|
Add(' end;');
|
|
end;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SaveToXML(Node: TSpkXMLNode);
|
|
var
|
|
Subnode: TSpkXMLNode;
|
|
begin
|
|
if not Assigned(Node) then
|
|
exit;
|
|
|
|
Subnode := Node['CaptionFont', true];
|
|
TSpkXMLTools.Save(Subnode, FCaptionFont);
|
|
|
|
// Idle
|
|
Subnode := Node['IdleFrameColor', true];
|
|
Subnode.TextAsColor := FIdleFrameColor;
|
|
|
|
Subnode := Node['IdleGradientFromColor', true];
|
|
Subnode.TextAsColor := FIdleGradientFromColor;
|
|
|
|
Subnode := Node['IdleGradientToColor', true];
|
|
Subnode.TextAsColor := FIdleGradientToColor;
|
|
|
|
Subnode := Node['IdleGradientType', true];
|
|
Subnode.TextAsInteger := integer(FIdleGradientType);
|
|
|
|
Subnode := Node['IdleInnerLightColor', true];
|
|
Subnode.TextAsColor := FIdleInnerLightColor;
|
|
|
|
Subnode := Node['IdleInnerDarkColor', true];
|
|
Subnode.TextAsColor := FIdleInnerDarkColor;
|
|
|
|
Subnode := Node['IdleCaptionColor', true];
|
|
Subnode.TextAsColor := FIdleCaptionColor;
|
|
|
|
// HotTrack
|
|
Subnode := Node['HottrackFrameColor', true];
|
|
Subnode.TextAsColor := FHottrackFrameColor;
|
|
|
|
Subnode := Node['HottrackGradientFromColor', true];
|
|
Subnode.TextAsColor := FHottrackGradientFromColor;
|
|
|
|
Subnode := Node['HottrackGradientToColor', true];
|
|
Subnode.TextAsColor := FHottrackGradientToColor;
|
|
|
|
Subnode := Node['HottrackGradientType', true];
|
|
Subnode.TextAsInteger := integer(FHottrackGradientType);
|
|
|
|
Subnode := Node['HottrackInnerLightColor', true];
|
|
Subnode.TextAsColor := FHottrackInnerLightColor;
|
|
|
|
Subnode := Node['HottrackInnerDarkColor', true];
|
|
Subnode.TextAsColor := FHottrackInnerDarkColor;
|
|
|
|
Subnode := Node['HottrackCaptionColor', true];
|
|
Subnode.TextAsColor := FHottrackCaptionColor;
|
|
|
|
Subnode := Node['HottrackBrightnessChange', true];
|
|
Subnode.TextAsInteger := FHotTrackBrightnessChange;
|
|
|
|
// Active
|
|
Subnode := Node['ActiveFrameColor', true];
|
|
Subnode.TextAsColor := FActiveFrameColor;
|
|
|
|
Subnode := Node['ActiveGradientFromColor', true];
|
|
Subnode.TextAsColor := FActiveGradientFromColor;
|
|
|
|
Subnode := Node['ActiveGradientToColor', true];
|
|
Subnode.TextAsColor := FActiveGradientToColor;
|
|
|
|
Subnode := Node['ActiveGradientType', true];
|
|
Subnode.TextAsInteger := integer(FActiveGradientType);
|
|
|
|
Subnode := Node['ActiveInnerLightColor', true];
|
|
Subnode.TextAsColor := FActiveInnerLightColor;
|
|
|
|
Subnode := Node['ActiveInnerDarkColor', true];
|
|
Subnode.TextAsColor := FActiveInnerDarkColor;
|
|
|
|
Subnode := Node['ActiveCaptionColor', true];
|
|
Subnode.TextAsColor := FActiveCaptionColor;
|
|
|
|
// Other
|
|
Subnode := Node['Style', true];
|
|
Subnode.TextAsInteger := integer(FStyle);
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetActiveCaptionColor(const Value: TColor);
|
|
begin
|
|
FActiveCaptionColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetActiveFrameColor(const Value: TColor);
|
|
begin
|
|
FActiveFrameColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetActiveGradientFromColor(const Value: TColor);
|
|
begin
|
|
FActiveGradientFromColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetActiveGradientToColor(const Value: TColor);
|
|
begin
|
|
FActiveGradientToColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetActiveGradientType(const Value: TBackgroundKind);
|
|
begin
|
|
FActiveGradientType := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetActiveInnerDarkColor(const Value: TColor);
|
|
begin
|
|
FActiveInnerDarkColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetActiveInnerLightColor(const Value: TColor);
|
|
begin
|
|
FActiveInnerLightColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetCaptionFont(const Value: TFont);
|
|
begin
|
|
FCaptionFont.Assign(Value);
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetHotTrackBrightnessChange(const Value: Integer);
|
|
begin
|
|
FHotTrackBrightnessChange := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetHotTrackCaptionColor(const Value: TColor);
|
|
begin
|
|
FHotTrackCaptionColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetHotTrackFrameColor(const Value: TColor);
|
|
begin
|
|
FHotTrackFrameColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetHotTrackGradientFromColor(const Value: TColor);
|
|
begin
|
|
FHotTrackGradientFromColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetHotTrackGradientToColor(const Value: TColor);
|
|
begin
|
|
FHotTrackGradientToColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetHotTrackGradientType(const Value: TBackgroundKind);
|
|
begin
|
|
FHotTrackGradientType := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetHotTrackInnerDarkColor(const Value: TColor);
|
|
begin
|
|
FHotTrackInnerDarkColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetHotTrackInnerLightColor(const Value: TColor);
|
|
begin
|
|
FHotTrackInnerLightColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetIdleCaptionColor(const Value: TColor);
|
|
begin
|
|
FIdleCaptionColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetIdleFrameColor(const Value: TColor);
|
|
begin
|
|
FIdleFrameColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetIdleGradientFromColor(const Value: TColor);
|
|
begin
|
|
FIdleGradientFromColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetIdleGradientToColor(const Value: TColor);
|
|
begin
|
|
FIdleGradientToColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetIdleGradientType(const Value: TBackgroundKind);
|
|
begin
|
|
FIdleGradientType := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetIdleInnerDarkColor(const Value: TColor);
|
|
begin
|
|
FIdleInnerDarkColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetIdleInnerLightColor(const Value: TColor);
|
|
begin
|
|
FIdleInnerLightColor := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkElementAppearance.SetStyle(const Value: TSpkElementStyle);
|
|
begin
|
|
FStyle := Value;
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
|
|
{ TSpkToolbarAppearanceDispatch }
|
|
|
|
constructor TSpkToolbarAppearanceDispatch.Create(
|
|
AToolbarAppearance: TSpkToolbarAppearance);
|
|
begin
|
|
inherited Create;
|
|
FToolbarAppearance := AToolbarAppearance;
|
|
end;
|
|
|
|
procedure TSpkToolbarAppearanceDispatch.NotifyAppearanceChanged;
|
|
begin
|
|
if FToolbarAppearance <> nil then
|
|
FToolbarAppearance.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
|
|
{ TSpkToolbarAppearance }
|
|
|
|
constructor TSpkToolbarAppearance.Create(ADispatch : TSpkBaseAppearanceDispatch);
|
|
begin
|
|
inherited Create;
|
|
FDispatch := ADispatch;
|
|
FAppearanceDispatch := TSpkToolbarAppearanceDispatch.Create(self);
|
|
FTab := TSpkTabAppearance.Create(FAppearanceDispatch);
|
|
FPane := TSpkPaneAppearance.create(FAppearanceDispatch);
|
|
FElement := TSpkElementAppearance.create(FAppearanceDispatch);
|
|
end;
|
|
|
|
destructor TSpkToolbarAppearance.Destroy;
|
|
begin
|
|
FElement.Free;
|
|
FPane.Free;
|
|
FTab.Free;
|
|
FAppearanceDispatch.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TSpkToolbarAppearance.Assign(Source: TPersistent);
|
|
var
|
|
Src: TSpkToolbarAppearance;
|
|
begin
|
|
if Source is TSpkToolbarAppearance then
|
|
begin
|
|
Src := TSpkToolbarAppearance(Source);
|
|
|
|
self.FTab.Assign(Src.Tab);
|
|
self.FPane.Assign(Src.Pane);
|
|
self.FElement.Assign(Src.Element);
|
|
|
|
if FDispatch <> nil then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end else
|
|
raise AssignException.Create('TSpkToolbarAppearance.Assign: Cannot assign the object '+Source.ClassName+' to TSpkToolbarAppearance!');
|
|
end;
|
|
|
|
procedure TSpkToolbarAppearance.LoadFromXML(Node: TSpkXMLNode);
|
|
var
|
|
Subnode: TSpkXMLNode;
|
|
begin
|
|
Tab.Reset;
|
|
Pane.Reset;
|
|
Element.Reset;
|
|
|
|
if not Assigned(Node) then
|
|
exit;
|
|
|
|
Subnode := Node['Tab', false];
|
|
if Assigned(Subnode) then
|
|
Tab.LoadFromXML(Subnode);
|
|
|
|
Subnode := Node['Pane', false];
|
|
if Assigned(Subnode) then
|
|
Pane.LoadFromXML(Subnode);
|
|
|
|
Subnode := Node['Element', false];
|
|
if Assigned(Subnode) then
|
|
Element.LoadFromXML(Subnode);
|
|
end;
|
|
|
|
procedure TSpkToolbarAppearance.NotifyAppearanceChanged;
|
|
begin
|
|
if Assigned(FDispatch) then
|
|
FDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkToolbarAppearance.Reset(AStyle: TSpkStyle = spkOffice2007Blue);
|
|
begin
|
|
FTab.Reset(AStyle);
|
|
FPane.Reset(AStyle);
|
|
FElement.Reset(AStyle);
|
|
if Assigned(FAppearanceDispatch) then
|
|
FAppearanceDispatch.NotifyAppearanceChanged;
|
|
end;
|
|
|
|
procedure TSpkToolbarAppearance.SaveToPascal(AList: TStrings);
|
|
begin
|
|
AList.Add('with Appearance do begin');
|
|
FTab.SaveToPascal(AList);
|
|
FPane.SaveToPascal(AList);
|
|
FElement.SaveToPascal(AList);
|
|
AList.Add('end;');
|
|
end;
|
|
|
|
procedure TSpkToolbarAppearance.SaveToXML(Node: TSpkXMLNode);
|
|
var
|
|
Subnode: TSpkXMLNode;
|
|
begin
|
|
Subnode := Node['Tab',true];
|
|
FTab.SaveToXML(Subnode);
|
|
|
|
Subnode := Node['Pane',true];
|
|
FPane.SaveToXML(Subnode);
|
|
|
|
Subnode := Node['Element',true];
|
|
FElement.SaveToXML(Subnode);
|
|
end;
|
|
|
|
procedure TSpkToolbarAppearance.SetElementAppearance(
|
|
const Value: TSpkElementAppearance);
|
|
begin
|
|
FElement.Assign(Value);
|
|
end;
|
|
|
|
procedure TSpkToolbarAppearance.SetPaneAppearance(const Value: TSpkPaneAppearance);
|
|
begin
|
|
FPane.Assign(Value);
|
|
end;
|
|
|
|
procedure TSpkToolbarAppearance.SetTabAppearance(const Value: TSpkTabAppearance);
|
|
begin
|
|
FTab.Assign(Value);
|
|
end;
|
|
|
|
procedure SetDefaultFont(AFont: TFont);
|
|
begin
|
|
//AFont.Assign(Screen.MenuFont); // wp: If this really is harmful this proc should be removed.
|
|
end;
|
|
|
|
end.
|