Componentes.Terceros.DevExp.../internal/x.42/1/ExpressLibrary/Sources/dxSkinInfo.pas
2009-03-03 12:07:07 +00:00

1205 lines
50 KiB
ObjectPascal

{********************************************************************}
{ }
{ Developer Express Visual Component Library }
{ Express Cross Platform Library classes }
{ }
{ Copyright (c) 2000-2009 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE EXPRESSCROSSPLATFORMLIBRARY AND ALL }
{ ACCOMPANYING VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM }
{ ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{********************************************************************}
unit dxSkinInfo;
interface
uses
Windows, Classes, Graphics, SysUtils, cxClasses, cxGraphics, cxLookAndFeels,
cxGeometry, cxLookAndFeelPainters, dxSkinsCore, dxSkinsStrs;
type
{ TdxSkinScrollInfo }
TdxSkinScrollInfo = class(TObject)
private
FElement: TdxSkinElement;
FImageIndex: Integer;
public
constructor Create(AElement: TdxSkinElement; AImageIndex: Integer;
APart: TcxScrollBarPart);
function Draw(DC: HDC; const R: TRect; AImageIndex: Integer;
AState: TdxSkinElementState): Boolean;
property Element: TdxSkinElement read FElement;
property ImageIndex: Integer read FImageIndex;
end;
TdxSkinFormIcon = (sfiMenu, sfiHelp, sfiMinimize, sfiMaximize, sfiRestore, sfiClose);
TdxSkinFormIcons = set of TdxSkinFormIcon;
{ TdxSkinInfo }
TdxSkinInfo = class(TcxIUnknownObject, IdxSkinChangeListener, IdxSkinInfo)
private
FSkin: TdxSkin;
procedure SetSkin(ASkin: TdxSkin);
protected
Group_Bars: TdxSkinControlGroup;
Group_Common: TdxSkinControlGroup;
Group_Docking: TdxSkinControlGroup;
Group_Editors: TdxSkinControlGroup;
Group_Form: TdxSkinControlGroup;
Group_Grid: TdxSkinControlGroup;
Group_NavBar: TdxSkinControlGroup;
Group_NavPane: TdxSkinControlGroup;
Group_Ribbon: TdxSkinControlGroup;
Group_Scheduler: TdxSkinControlGroup;
Group_Tabs: TdxSkinControlGroup;
Group_VGrid: TdxSkinControlGroup;
//
CardViewSeparator: TdxSkinElement;
ClockElements: array[Boolean] of TdxSkinElement;
CheckboxElement: TdxSkinElement;
EditButtonElements: array [Boolean] of TdxSkinElement;
EditButtonGlyphs: array [TcxEditBtnKind] of TdxSkinElement;
GridGroupByBox: TdxSkinElement;
GridGroupRow: TdxSkinElement;
GridLine: TdxSkinElement;
GridFixedLine: TdxSkinElement;
IndicatorImages: TdxSkinElement;
NavigatorGlyphs: TdxSkinElement;
NavigatorGlyphsVert: TdxSkinElement;
RadioGroupButton: TdxSkinElement;
Splitter: array[Boolean] of TdxSkinElement;
TrackBarThumb: array[Boolean, TcxTrackBarTicksAlign] of TdxSkinElement;
TrackBarTrack: array[Boolean] of TdxSkinElement;
VGridCategory: TdxSkinElement;
VGridLine: array[Boolean] of TdxSkinElement;
// Colors
ContentEvenColor: TdxSkinColor;
ContentOddColor: TdxSkinColor;
ContentTextColor: TdxSkinColor;
HeaderBackgroundColor: TdxSkinColor;
HeaderBackgroundTextColor: TdxSkinColor;
SelectionColor: TdxSkinColor;
SelectionTextColor: TdxSkinColor;
// ExpandButton
ExpandButton: TdxSkinElement;
// Footer
FooterCell, FooterPanel: TdxSkinElement;
// header
Header, HeaderSpecial: TdxSkinElement;
// filter
FilterButtons: array[Boolean] of TdxSkinElement;
FilterPanel: TdxSkinElement;
// Scheduler3
SchedulerNavigationButtons: array[Boolean] of TdxSkinElement;
SchedulerNavigationButtonsArrow: array[Boolean] of TdxSkinElement;
//
procedure CheckItem(AItem: TObject; const AMessage: string; var ACheckedItem);
function CreateBlankElement(AGroup: TdxSkinControlGroup; const AName: string): TdxSkinElement;
function CreateBlankGroup(const AName: string): TdxSkinControlGroup;
function GetColorByName(AGroup: TdxSkinPersistent; const AName: string): TdxSkinColor;
function GetIntPropertyByName(AGroup: TdxSkinPersistent; const AName: string): TdxSkinIntegerProperty;
function GetElementColorProperty(AElement: TdxSkinPersistent; const APropName: string): TColor;
function GetElementIntProperty(AElement: TdxSkinPersistent; const APropName: string;
ADefValue: Integer = 0): Integer;
function GetGroupByName(const AName: string): TdxSkinControlGroup;
function GetElementByName(AGroup: TdxSkinControlGroup; const AName: string;
ACreateIfEmpty: Boolean = True): TdxSkinElement;
procedure InitializeGroups;
procedure InitializeBarElements;
procedure InitializeButtonElements;
procedure InitializeCheckboxElements;
procedure InitializeClockElements;
procedure InitializeColors;
procedure InitializeDockControlElements;
procedure InitializeEditButtonElements;
procedure InitializeFilterElements;
procedure InitializeFooterElements;
procedure InitializeFormElements;
procedure InitializeGridElements;
procedure InitializeGroupBoxElements;
procedure InitializeHeaderElements;
procedure InitializeIndicatorImages;
procedure InitializeNavBarElements;
procedure InitializeNavigatorElements;
procedure InitializePageControlElements;
procedure InitializeProgressBarElements;
procedure InitializeRadioGroupElements;
procedure InitializeRibbonColors;
procedure InitializeRibbonElements;
procedure InitializeRibbonProperties;
procedure InitializeSchedulerElements;
procedure InitializeScrollBarElements;
procedure InitializeSizeGripElements;
procedure InitializeSplitterElements;
procedure InitializeToolTipElements;
procedure InitializeTrackBarElements;
procedure InitializeSkinInfo; virtual;
procedure FinalizeScrollBarElements;
procedure FinalizeSkinInfo; virtual;
{ IdxSkinInfo }
function GetSkin: TdxSkin;
{ IdxSkinChangeListener }
procedure SkinChanged(Sender: TdxSkin); virtual;
public
// Button
ButtonDisabled: TdxSkinColor;
ButtonElements: TdxSkinElement;
// Colors
ContainerBorderColor: TdxSkinColor;
ContainerHighlightBorderColor: TdxSkinColor;
ContentColor: TdxSkinColor;
EditorBackgroundColors: array[TcxEditStateColorKind] of TdxSkinColor;
EditorTextColors: array[TcxEditStateColorKind] of TdxSkinColor;
// ProgressBar
ProgressBarElements: array[Boolean, Boolean] of TdxSkinElement;
// ScrollBars
ScrollBar_Elements: array[Boolean, TcxScrollBarPart] of TdxSkinScrollInfo;
// Label
LabelLine: array[Boolean] of TdxSkinElement;
// GroupBox
GroupBoxCaptionElements: array[TcxGroupBoxCaptionPosition] of TdxSkinElement;
GroupBoxClient: TdxSkinElement;
GroupBoxElements: array[TcxGroupBoxCaptionPosition] of TdxSkinElement;
// DockControl
DockControlBorder: TdxSkinElement;
DockControlCaption: TdxSkinElement;
DockControlCaptionNonFocusedTextColor: TColor;
DockControlHideBar: TdxSkinElement;
DockControlHideBarLeft: TdxSkinElement;
DockControlHideBarRight: TdxSkinElement;
DockControlHideBarBottom: TdxSkinElement;
DockControlHideBarButtons: TdxSkinElement;
DockControlHideBarTextColor: array[Boolean] of TdxSkinColor;
DockControlIndents: array[0..2] of Integer;
DockControlTabHeader: TdxSkinElement;
DockControlTabHeaderBackground: TdxSkinElement;
DockControlTabHeaderLine: TdxSkinElement;
DockControlTabTextColor: array[Boolean] of TdxSkinColor;
DockControlWindowButton: TdxSkinElement;
DockControlWindowButtonGlyphs: TdxSkinElement;
// PageControl
LayoutControlColor: TdxSkinColor;
PageControlButtonHorz: TdxSkinElement;
PageControlButtonVert: TdxSkinElement;
PageControlHeader: TdxSkinElement;
PageControlIndents: array[0..5] of Integer;
PageControlPane: TdxSkinElement;
TabTextColor: TdxSkinColor;
TabTextColorActive: TdxSkinColor;
TabTextColorDisabled: TdxSkinColor;
TabTextColorHot: TdxSkinColor;
// NavBar
NavBarBackgroundColor: TdxSkinElement;
NavBarGroupButtons: array [Boolean] of TdxSkinElement;
NavBarGroupClient: TdxSkinElement;
NavBarGroupHeader: TdxSkinElement;
NavBarItem: TdxSkinElement;
NavPaneCaptionFontSize: TdxSkinIntegerProperty;
NavPaneCaptionHeight: TdxSkinIntegerProperty;
NavPaneCollapseButton: TdxSkinElement;
NavPaneCollapsedGroupClient: TdxSkinElement;
NavPaneExpandButton: TdxSkinElement;
NavPaneFormBorder: TdxSkinElement;
NavPaneFormSizeGrip: TdxSkinElement;
NavPaneGroupButton: array[Boolean] of TdxSkinElement;
NavPaneGroupCaption: TdxSkinElement;
NavPaneGroupClient: TdxSkinElement;
NavPaneItem: TdxSkinElement;
NavPaneOverflowPanel: TdxSkinElement;
NavPaneOverflowPanelExpandedItem: TdxSkinElement;
NavPaneOverflowPanelItem: TdxSkinElement;
NavPaneScrollButtons: array[Boolean] of TdxSkinElement;
NavPaneSelectedItem: TdxSkinElement;
NavPaneSplitter: TdxSkinElement;
// Form
FormBorderWidths: array[Boolean] of TRect;
FormCaptionDelta: Integer;
FormContent: TdxSkinElement;
FormFrames: array[Boolean, TcxBorder] of TdxSkinElement;
FormIcons: array[Boolean, TdxSkinFormIcon] of TdxSkinElement;
FormInactiveColor: TdxSkinColor;
FormStatusBar: TdxSkinElement;
FormTextShadowColor: TdxSkinColor;
SizeGrip: TdxSkinElement;
// Scheduler
SchedulerAllDayArea: array[Boolean] of TdxSkinElement;
SchedulerAppointment: array[Boolean] of TdxSkinElement;
SchedulerAppointmentBorder: TdxSkinColor;
SchedulerAppointmentBorderSize: TdxSkinIntegerProperty;
SchedulerAppointmentMask: TdxSkinElement;
SchedulerAppointmentShadow: array[Boolean] of TdxSkinElement;
SchedulerCurrentTimeIndicator: TdxSkinElement;
SchedulerMoreButton: TdxSkinElement;
SchedulerNavigatorColor: TdxSkinColor;
SchedulerTimeGridCurrentTimeIndicator: TdxSkinElement;
SchedulerTimeGridHeader: array[Boolean] of TdxSkinElement;
SchedulerTimeLine: TdxSkinElement;
SchedulerTimeRuler: TdxSkinElement;
// Bars
Bar: TdxSkinElement;
BarCustomize: TdxSkinElement;
BarCustomizeVertical: TdxSkinElement;
BarDisabledTextColor: TdxSkinColor;
BarDrag: TdxSkinElement;
BarDragVertical: TdxSkinElement;
BarSeparator: TdxSkinElement;
BarVertical: TdxSkinElement;
BarVerticalSeparator: TdxSkinElement;
Dock: TdxSkinElement;
FloatingBar: TdxSkinElement;
LinkBorderPainter: TdxSkinElement;
LinkSelected: TdxSkinElement;
MainMenu: TdxSkinElement;
MainMenuCustomize: TdxSkinElement;
MainMenuDrag: TdxSkinElement;
MainMenuLinkSelected: TdxSkinElement;
MainMenuVertical: TdxSkinElement;
PopupMenu: TdxSkinElement;
PopupMenuCheck: TdxSkinElement;
PopupMenuExpandButton: TdxSkinElement;
PopupMenuLinkSelected: TdxSkinElement;
PopupMenuSeparator: TdxSkinElement;
PopupMenuSideStrip: TdxSkinElement;
PopupMenuSideStripNonRecent: TdxSkinElement;
PopupMenuSplitButton: TdxSkinElement;
PopupMenuSplitButton2: TdxSkinElement;
ScreenTipItem: TdxSkinColor;
ScreenTipSeparator: TdxSkinElement;
ScreenTipTitleItem: TdxSkinColor;
ScreenTipWindow: TdxSkinElement;
//
RibbonApplicationButton: TdxSkinElement;
RibbonApplicationMenuBorders: array[Boolean] of TdxSkinElement;
RibbonButtonArrow: TdxSkinElement;
RibbonButtonGroup: TdxSkinElement;
RibbonButtonGroupButton: TdxSkinElement;
RibbonButtonGroupSeparator: TdxSkinElement;
RibbonButtonText: array[Boolean] of TColor;
RibbonCaptionFontDelta: TdxSkinIntegerProperty;
RibbonCaptionText: array[Boolean] of TColor;
RibbonCollapsedToolBarBackground: TdxSkinElement;
RibbonCollapsedToolBarGlyphBackground: TdxSkinElement;
RibbonDocumentNameTextColor: array[Boolean] of TColor;
RibbonExtraPaneColor: TdxSkinColor;
RibbonFormBottom: array[Boolean] of TdxSkinElement;
RibbonFormCaption: TdxSkinElement;
RibbonFormLeft: array[Boolean] of TdxSkinElement;
RibbonFormRight: array[Boolean] of TdxSkinElement;
RibbonGalleryBackground: TdxSkinElement;
RibbonGalleryButtonDown: TdxSkinElement;
RibbonGalleryButtonDropDown: TdxSkinElement;
RibbonGalleryButtonUp: TdxSkinElement;
RibbonGalleryGroupCaption: TdxSkinElement;
RibbonGalleryPane: TdxSkinElement;
RibbonGallerySizeGrips: TdxSkinElement;
RibbonGallerySizingPanel: TdxSkinElement;
RibbonGroupScroll: array[Boolean] of TdxSkinElement;
RibbonHeaderBackground: TdxSkinElement;
RibbonIndents: array[0..2] of Integer;
RibbonLargeButton: TdxSkinElement;
RibbonLargeSplitButtonBottom: TdxSkinElement;
RibbonLargeSplitButtonTop: TdxSkinElement;
RibbonQATCustomizeButtonOutsizeQAT: array[Boolean] of TdxSkinBooleanProperty;
RibbonQATIndentBeforeCustomizeButton: array[Boolean] of TdxSkinIntegerProperty;
RibbonQuickToolbar: array[Boolean] of TdxSkinElement;
RibbonQuickToolbarBelow: TdxSkinElement;
RibbonQuickToolbarButtonGlyph: TdxSkinElement;
RibbonQuickToolbarDropDown: TdxSkinElement;
RibbonQuickToolbarGlyph: TdxSkinElement;
RibbonSmallButton: TdxSkinElement;
RibbonSplitButtonLeft: TdxSkinElement;
RibbonSplitButtonRight: TdxSkinElement;
RibbonStatusBarBackground: TdxSkinElement;
RibbonStatusBarButton: TdxSkinElement;
RibbonStatusBarSeparator: TdxSkinElement;
RibbonTab: TdxSkinElement;
RibbonTabGroup: TdxSkinElement;
RibbonTabGroupHeader: TdxSkinElement;
RibbonTabPanel: TdxSkinElement;
RibbonTabPanelGroupButton: TdxSkinElement;
RibbonTabText: array[Boolean] of TColor;
// Status bar text colors
RibbonStatusBarText: TColor;
RibbonStatusBarTextHot: TColor;
RibbonStatusBarTextDisabled: TColor;
//
constructor Create(ASkin: TdxSkin); virtual;
destructor Destroy; override;
property Skin: TdxSkin read FSkin write SetSkin;
end;
TdxSkinInfoClass = class of TdxSkinInfo;
implementation
uses
Math;
{ TdxSkinInfo }
constructor TdxSkinInfo.Create(ASkin: TdxSkin);
begin
Skin := ASkin;
end;
destructor TdxSkinInfo.Destroy;
var
ASkin: TdxSkin;
begin
ASkin := Skin;
Skin := nil;
FreeAndNil(ASkin);
inherited Destroy;
end;
procedure TdxSkinInfo.CheckItem(
AItem: TObject; const AMessage: string; var ACheckedItem);
begin
Assert(AItem <> nil, AMessage);
TObject(ACheckedItem) := AItem;
end;
function TdxSkinInfo.CreateBlankElement(AGroup: TdxSkinControlGroup;
const AName: string): TdxSkinElement;
var
ABitmap: TBitmap;
begin
Result := AGroup.AddElement(AName);
if Result <> nil then
begin
Result.Image.States := [esNormal];
Result.Image.Stretch := smStretch;
Result.Tag := 2;
ABitmap := TBitmap.Create;
try
ABitmap.Width := 32;
ABitmap.Height := 32;
with ABitmap.Canvas do
begin
Pen.Color := clRed;
Pen.Width := 2;
MoveTo(0, 0);
LineTo(ABitmap.Width, ABitmap.Height);
MoveTo(0, ABitmap.Height);
LineTo(ABitmap.Width, 0);
end;
Result.Image.Texture.SetBitmap(ABitmap);
finally
ABitmap.Free;
end;
end;
end;
function TdxSkinInfo.CreateBlankGroup(const AName: string): TdxSkinControlGroup;
begin
Result := FSkin.AddGroup(AName);
if Result <> nil then
Result.Tag := 2;
end;
function TdxSkinInfo.GetColorByName(AGroup: TdxSkinPersistent;
const AName: string): TdxSkinColor;
begin
Result := nil;
if AGroup <> nil then
begin
Result := AGroup.GetPropertyByName(AName) as TdxSkinColor;
if Result <> nil then
Result.Tag := 1;
end;
end;
function TdxSkinInfo.GetIntPropertyByName(AGroup: TdxSkinPersistent;
const AName: string): TdxSkinIntegerProperty;
begin
Result := nil;
if AGroup <> nil then
begin
Result := AGroup.GetPropertyByName(AName) as TdxSkinIntegerProperty;
if Result <> nil then
Result.Tag := 1;
end;
end;
function TdxSkinInfo.GetElementColorProperty(AElement: TdxSkinPersistent;
const APropName: string): TColor;
var
AProperty: TdxSkinColor;
begin
Result := clDefault;
if AElement <> nil then
begin
AProperty := AElement.GetPropertyByName(APropName) as TdxSkinColor;
if AProperty <> nil then
Result := AProperty.Value;
end;
end;
function TdxSkinInfo.GetElementIntProperty(AElement: TdxSkinPersistent;
const APropName: string; ADefValue: Integer = 0): Integer;
var
AProperty: TdxSkinIntegerProperty;
begin
Result := ADefValue;
if AElement <> nil then
begin
AProperty := AElement.GetPropertyByName(APropName) as TdxSkinIntegerProperty;
if AProperty <> nil then
Result := AProperty.Value;
end;
end;
function TdxSkinInfo.GetGroupByName(const AName: string): TdxSkinControlGroup;
begin
if Skin = nil then
Result := nil
else
begin
Result := Skin.GetGroupByName(AName);
if Result = nil then
Result := CreateBlankGroup(AName)
else
Result.Tag := 1;
end;
end;
function TdxSkinInfo.GetElementByName(AGroup: TdxSkinControlGroup;
const AName: string; ACreateIfEmpty: Boolean = True): TdxSkinElement;
begin
if AGroup = nil then
Result := nil
else
begin
Result := AGroup.GetElementByName(AName);
if Result = nil then
begin
if ACreateIfEmpty then
Result := CreateBlankElement(AGroup, AName);
end
else
Result.Tag := 1;
end;
end;
procedure TdxSkinInfo.InitializeGroups;
begin
Group_Bars := GetGroupByName(sdxSkinGroupBars);
Group_Common := GetGroupByName(sdxSkinGroupCommon);
Group_Docking := GetGroupByName(sdxSkinGroupDocking);
Group_Editors := GetGroupByName(sdxSkinGroupEditors);
Group_Ribbon := GetGroupByName(sdxSkinGroupRibbon);
Group_Form := GetGroupByName(sdxSkinGroupForm);
Group_Grid := GetGroupByName(sdxSkinGroupGrid);
Group_Tabs := GetGroupByName(sdxSkinGroupTabs);
Group_Scheduler := GetGroupByName(sdxSkinGroupScheduler);
Group_VGrid := GetGroupByName(sdxSkinGroupVGrid);
Group_NavBar := GetGroupByName(sdxSkinGroupNavBar);
Group_NavPane := GetGroupByName(sdxSkinGroupNavPane);
end;
procedure TdxSkinInfo.InitializeBarElements;
begin
Bar := GetElementByName(Group_Bars, sdxBarsBar);
BarCustomize := GetElementByName(Group_Bars, sdxBarsBarCustomize);
BarCustomizeVertical := GetElementByName(Group_Bars, sdxBarsBarCustomizeVertical);
BarDrag := GetElementByName(Group_Bars, sdxBarsBarFinger);
BarDragVertical := GetElementByName(Group_Bars, sdxBarsBarFingerVertical);
BarSeparator := GetElementByName(Group_Bars, sdxBarsBarSeparator);
BarVertical := GetElementByName(Group_Bars, sdxBarsBarVertical);
BarVerticalSeparator := GetElementByName(Group_Bars, sdxBarsBarVerticalSeparator);
Dock := GetElementByName(Group_Bars, sdxBarsDock);
FloatingBar := GetElementByName(Group_Bars, sdxBarsFloatBar);
LinkBorderPainter := GetElementByName(Group_Bars, sdxBarsLinkStatic);
LinkSelected := GetElementByName(Group_Bars, sdxBarsLinkSelected);
MainMenu := GetElementByName(Group_Bars, sdxBarsMainMenu);
MainMenuCustomize := GetElementByName(Group_Bars, sdxBarsMainMenuCustomize, False);
MainMenuDrag := GetElementByName(Group_Bars, sdxBarsMainMenuDrag, False);
MainMenuLinkSelected := GetElementByName(Group_Bars, sdxBarsMainMenuLinkSelected);
MainMenuVertical := GetElementByName(Group_Bars, sdxBarsMainMenuVertical);
PopupMenu := GetElementByName(Group_Bars, sdxBarsPopupMenu);
PopupMenuCheck := GetElementByName(Group_Bars, sdxBarsPopupMenuCheck);
PopupMenuExpandButton := GetElementByName(Group_Bars, sdxBarsPopupMenuExpandButton);
PopupMenuLinkSelected := GetElementByName(Group_Bars, sdxBarsPopupMenuLinkSelected);
PopupMenuSeparator := GetElementByName(Group_Bars, sdxBarsPopupMenuSeparator);
PopupMenuSideStrip := GetElementByName(Group_Bars, sdxBarsPopupMenuSideStrip);
PopupMenuSideStripNonRecent := GetElementByName(Group_Bars, sdxBarsPopupMenuSideStripNonRecent);
PopupMenuSplitButton := GetElementByName(Group_Bars, sdxBarsPopupMenuDropDownButtonLabel);
PopupMenuSplitButton2 := GetElementByName(Group_Bars, sdxBarsPopupMenuDropDownButtonArrow);
end;
procedure TdxSkinInfo.InitializeButtonElements;
begin
ButtonElements := GetElementByName(Group_Common, sdxButton);
ExpandButton := GetElementByName(Group_Grid, sdxPlusMinus);
if ButtonElements <> nil then
ButtonDisabled := GetColorByName(ButtonElements, sdxSkinsButtonDisabledTextColor);
end;
procedure TdxSkinInfo.InitializeCheckboxElements;
begin
CheckboxElement := GetElementByName(Group_Editors, sdxCheckbox);
end;
procedure TdxSkinInfo.InitializeClockElements;
begin
ClockElements[False] := GetElementByName(Group_Editors, sdxClock);
ClockElements[True] := GetElementByName(Group_Editors, sdxClockGlass);
end;
procedure TdxSkinInfo.InitializeColors;
var
AKind: TcxEditStateColorKind;
begin
BarDisabledTextColor := GetColorByName(Group_Bars, sdxSkinsBarDisabledTextColor);
DockControlTabTextColor[False] := GetColorByName(Group_Docking, sdxSkinsTabTextColor);
DockControlTabTextColor[True] := GetColorByName(Group_Docking, sdxSkinsTabTextColorActive);
SchedulerNavigatorColor := GetColorByName(Group_Scheduler, sdxSkinsSchedulerNavigatorColor);
TabTextColor := GetColorByName(PageControlHeader, sdxTextColorNormal);
TabTextColorActive := GetColorByName(PageControlHeader, sdxTextColorSelected);
TabTextColorDisabled := GetColorByName(PageControlHeader, sdxTextColorDisabled);
TabTextColorHot := GetColorByName(PageControlHeader, sdxTextColorHot);
if Skin <> nil then
begin
ContainerBorderColor := Skin.GetColorByName(sdxSkinsContainerBorderColor);
ContainerHighlightBorderColor := Skin.GetColorByName(sdxSkinsContainerHighlightBorderColor);
ContentColor := Skin.GetColorByName(sdxSkinsContentColor);
ContentEvenColor := Skin.GetColorByName(sdxSkinsContentEvenColor);
ContentOddColor := Skin.GetColorByName(sdxSkinsContentOddColor);
ContentTextColor := Skin.GetColorByName(sdxSkinsContentTextColor);
DockControlHideBarTextColor[False] := Skin.GetColorByName(sdxSkinsDCHiddenBarTextColor);
DockControlHideBarTextColor[True] := Skin.GetColorByName(sdxSkinsDCHiddenBarTextHotColor);
HeaderBackgroundColor := Skin.GetColorByName(sdxSkinsHeaderBackgroundColor);
HeaderBackgroundTextColor := Skin.GetColorByName(sdxSkinsHeaderBackgroundTextColor);
LayoutControlColor := Skin.GetColorByName(sdxSkinsLayoutControlColor);
SelectionColor := Skin.GetColorByName(sdxSkinsSelectionColor);
SelectionTextColor := Skin.GetColorByName(sdxSkinsSelectionTextColor);
for AKind := Low(TcxEditStateColorKind) to High(TcxEditStateColorKind) do
begin
EditorTextColors[AKind] := GetColorByName(Group_Editors, EditTextColorsMap[AKind]);
EditorBackgroundColors[AKind] := GetColorByName(Group_Editors, EditBackgroundColorsMap[AKind]);
end;
end;
end;
procedure TdxSkinInfo.InitializeDockControlElements;
begin
DockControlTabHeaderBackground := GetElementByName(Group_Docking,
sdxDockCtrlTabHeaderBackground);
DockControlTabHeaderLine := GetElementByName(Group_Docking,
sdxDockCtrlTabHeaderLine);
DockControlHideBarButtons := GetElementByName(Group_Docking,
sdxDockCtrlTabHeaderAutoHideBar);
DockControlWindowButton := GetElementByName(Group_Docking, sdxDockCtrlWindowButton);
DockControlWindowButtonGlyphs := GetElementByName(Group_Docking, sdxDockCtrlWindowGlyphs);
DockControlTabHeader := GetElementByName(Group_Docking, sdxDockCtrlTabHeader);
DockControlHideBar := GetElementByName(Group_Docking, sdxDockCtrlAutoHideBar);
DockControlHideBarLeft := GetElementByName(Group_Docking, sdxDockCtrlAutoHideBarLeft);
DockControlHideBarRight := GetElementByName(Group_Docking, sdxDockCtrlAutoHideBarRight);
DockControlHideBarBottom := GetElementByName(Group_Docking, sdxDockCtrlAutoHideBarBottom);
DockControlCaption := GetElementByName(Group_Docking, sdxDockCtrlCaption);
DockControlBorder := GetElementByName(Group_Docking, sdxDockCtrlBorder);
DockControlCaptionNonFocusedTextColor := GetElementColorProperty(DockControlCaption,
sdxDockCtrlInactiveCaptionTextColor);
FillChar(DockControlIndents, SizeOf(DockControlIndents), 0);
if Group_Docking <> nil then
begin
DockControlIndents[0] := GetElementIntProperty(Group_Docking, sdxDCActiveTabHeaderDownGrow);
DockControlIndents[1] := GetElementIntProperty(Group_Docking, sdxDCActiveTabHeaderHGrow);
DockControlIndents[2] := GetElementIntProperty(Group_Docking, sdxDCActiveTabHeaderUpGrow);
end;
end;
procedure TdxSkinInfo.InitializeEditButtonElements;
var
AKind: TcxEditBtnKind;
begin
LabelLine[False] := GetElementByName(Group_Editors, sdxLabelLine);
LabelLine[True] := GetElementByName(Group_Editors, sdxLabelLineVert);
EditButtonElements[False] := GetElementByName(Group_Editors, sdxEditorButton);
EditButtonElements[True] := GetElementByName(Group_Editors, sdxCloseButton);
for AKind := Low(TcxEditBtnKind) to High(TcxEditBtnKind) do
EditButtonGlyphs[AKind] := GetElementByName(Group_Editors, EditButtonsMap[AKind]);
end;
procedure TdxSkinInfo.InitializeFilterElements;
begin
FilterButtons[False] := GetElementByName(Group_Grid, sdxFilterButton);
FilterButtons[True] := GetElementByName(Group_Grid, sdxFilterButtonActive);
FilterPanel := GetElementByName(Group_Grid, sdxFilterPanel);
end;
procedure TdxSkinInfo.InitializeFooterElements;
begin
FooterCell := GetElementByName(Group_Grid, sdxFooterCell);
FooterPanel := GetElementByName(Group_Grid, sdxFooterPanel);
end;
procedure TdxSkinInfo.InitializeFormElements;
procedure CorrectStateAndStretch(AElement: TdxSkinElement;
AInclude, AExclude: TdxSkinElementStates; AStretch: Boolean = False);
begin
if AElement = nil then Exit;
AElement.Image.States := AElement.Image.States + AInclude - AExclude;
if AStretch then
AElement.Image.Stretch := smStretch;
end;
function CorrectElementMargins(const R: TRect; ASize: TSize; ASide: TcxBorder): TRect;
begin
Result := R;
case ASide of
bLeft:
if ASize.cx = 1 then
begin
Result.Left := 1;
Result.Right := 0;
end;
bRight:
if ASize.cx = 1 then
begin
Result.Right := 1;
Result.Left := 0;
end;
bBottom:
if ASize.cy = 1 then
begin
Result.Top := 0;
Result.Bottom := 1;
end;
end;
end;
procedure GetFormBorderSize(var R: TRect; const AElement: TdxSkinElement;
ASide: TcxBorder);
begin
if AElement = nil then Exit;
case ASide of
bLeft:
R.Left := AElement.Size.cx;
bRight:
R.Right := AElement.Size.cx;
bBottom:
R.Bottom := AElement.Size.cy;
end;
end;
var
R: TRect;
ASide: TcxBorder;
AStandard: Boolean;
AIcon: TdxSkinFormIcon;
begin
FillChar(FormIcons, SizeOf(FormIcons), 0);
FormInactiveColor := GetColorByName(Group_Form, sdxTextInactiveColor);
FormTextShadowColor := GetColorByName(Group_Form, sdxTextShadowColor);
FormStatusBar := GetElementByName(Group_Bars, sdxStatusBar);
FormIcons[False, sfiClose] := GetElementByName(Group_Form, sdxSmallFormButtonClose);
FormIcons[True, sfiClose] := GetElementByName(Group_Form, sdxFormButtonClose);
FormIcons[True, sfiMinimize] := GetElementByName(Group_Form, sdxFormButtonMinimize);
FormIcons[True, sfiMaximize] := GetElementByName(Group_Form, sdxFormButtonMaximize);
FormIcons[True, sfiRestore] := GetElementByName(Group_Form, sdxFormButtonRestore);
FormIcons[True, sfiHelp] := GetElementByName(Group_Form, sdxFormButtonHelp);
FormContent := GetElementByName(Group_Form, sdxFormContent);
for AStandard := False to True do
for ASide := Low(TcxBorder) to High(TcxBorder) do
FormFrames[AStandard, ASide] := GetElementByName(Group_Form,
FormFrameMap[AStandard, ASide]);
if Skin = nil then Exit;
Skin.BeginUpdate;
try
for AStandard := False to True do
begin
R := cxNullRect;
for AIcon := sfiMenu to sfiClose do
CorrectStateAndStretch(FormIcons[AStandard, AIcon],
[esActiveDisabled], [esActive], True);
for ASide := Low(TcxBorder) to High(TcxBorder) do
if FormFrames[AStandard, ASide] <> nil then
begin
CorrectStateAndStretch(FormFrames[AStandard, ASide],
[esActive, esActiveDisabled], [esNormal]);
GetFormBorderSize(R, FormFrames[AStandard, ASide], ASide);
with FormFrames[AStandard, ASide].Image do
Margins.Rect := CorrectElementMargins(Margins.Rect, Size, ASide);
end;
FormBorderWidths[AStandard] := R;
end;
FormCaptionDelta := Max(1,
GetElementIntProperty(FormFrames[True, bTop], sdxCaptionFontDelta));
finally
Skin.CancelUpdate;
end;
end;
procedure TdxSkinInfo.InitializeGroupBoxElements;
begin
GroupBoxClient := GetElementByName(Group_Common, sdxGroupPanelNoBorder);
GroupBoxElements[cxgpTop] := GetElementByName(Group_Common, sdxGroupPanelTop);
GroupBoxElements[cxgpBottom] := GetElementByName(Group_Common, sdxGroupPanelBottom);
GroupBoxElements[cxgpLeft] := GetElementByName(Group_Common, sdxGroupPanelLeft);
GroupBoxElements[cxgpRight] := GetElementByName(Group_Common, sdxGroupPanelRight);
GroupBoxElements[cxgpCenter] := GetElementByName(Group_Common, sdxGroupPanel);
GroupBoxCaptionElements[cxgpTop] := GetElementByName(Group_Common, sdxGroupPanelCaptionTop);
GroupBoxCaptionElements[cxgpBottom] := GetElementByName(Group_Common, sdxGroupPanelCaptionBottom);
GroupBoxCaptionElements[cxgpLeft] := GetElementByName(Group_Common, sdxGroupPanelCaptionLeft);
GroupBoxCaptionElements[cxgpRight] := GetElementByName(Group_Common, sdxGroupPanelCaptionRight);
end;
procedure TdxSkinInfo.InitializeGridElements;
begin
GridFixedLine := GetElementByName(Group_Grid, sdxGridFixedLine);
CardViewSeparator := GetElementByName(Group_Grid, sdxCardSeparator);
GridGroupByBox := GetElementByName(Group_Grid, sdxGroupByBox);
if (GridGroupByBox <> nil) and not GridGroupByBox.Image.Empty then
GridGroupByBox.Color := clNone;
GridGroupRow := GetElementByName(Group_Grid, sdxGroupRow);
GridLine := GetElementByName(Group_Grid, sdxGridLine);
VGridCategory := GetElementByName(Group_VGrid, sdxVGridRowHeader);
VGridLine[False] := GetElementByName(Group_VGrid, sdxVGridLine);
VGridLine[True] := GetElementByName(Group_VGrid, sdxVGridBandLine);
end;
procedure TdxSkinInfo.InitializeHeaderElements;
begin
Header := GetElementByName(Group_Common, sdxHeader);
HeaderSpecial := GetElementByName(Group_Common, sdxHeaderSpecial);
end;
procedure TdxSkinInfo.InitializeIndicatorImages;
begin
IndicatorImages := GetElementByName(Group_Grid, sdxIndicatorImages);
end;
procedure TdxSkinInfo.InitializeNavBarElements;
begin
NavBarBackgroundColor := GetElementByName(Group_NavBar, sdxNavBarBackground);
NavBarGroupClient := GetElementByName(Group_NavBar, sdxNavBarGroupClient);
NavBarItem := GetElementByName(Group_NavBar, sdxNavBarItem);
NavBarGroupHeader := GetElementByName(Group_NavBar, sdxNavBarGroupHeader);
NavBarGroupButtons[True] := GetElementByName(Group_NavBar, sdxNavBarGroupCloseButton);
NavBarGroupButtons[False] := GetElementByName(Group_NavBar, sdxNavBarGroupOpenButton);
NavPaneCollapseButton := GetElementByName(Group_NavPane, sdxNavPaneCollapseButton);
NavPaneCollapsedGroupClient := GetElementByName(Group_NavPane, sdxNavPaneCollapsedGroupClient);
NavPaneExpandButton := GetElementByName(Group_NavPane, sdxNavPaneExpandButton);
NavPaneFormBorder := GetElementByName(Group_NavPane, sdxNavPaneFormBorder);
NavPaneFormSizeGrip := GetElementByName(Group_NavPane, sdxNavPaneFormSizeGrip);
NavPaneGroupButton[False] := GetElementByName(Group_NavPane, sdxNavPaneGroupButton);
NavPaneGroupButton[True] := GetElementByName(Group_NavPane, sdxNavPaneGroupButtonSelected);
NavPaneGroupCaption := GetElementByName(Group_NavPane, sdxNavPaneGroupCaption);
NavPaneSplitter := GetElementByName(Group_NavPane, sdxNavPaneSplitter);
NavPaneScrollButtons[False] := GetElementByName(Group_NavPane, sdxNavPaneScrollUpBtn);
NavPaneScrollButtons[True] := GetElementByName(Group_NavPane, sdxNavPaneScrollDownBtn);
NavPaneOverflowPanel := GetElementByName(Group_NavPane, sdxNavPaneOverflowPanel);
NavPaneOverflowPanelItem := GetElementByName(Group_NavPane, sdxNavPaneOverflowPanelItem);
NavPaneOverflowPanelExpandedItem := GetElementByName(Group_NavPane, sdxNavPaneOverflowPanelExpandItem);
NavPaneGroupClient := GetElementByName(Group_NavPane, sdxNavPaneGroupClient);
NavPaneItem := GetElementByName(Group_NavPane, sdxNavPaneItem);
NavPaneSelectedItem := GetElementByName(Group_NavPane, sdxNavPaneItemSelected);
NavPaneCaptionHeight := GetIntPropertyByName(NavPaneGroupCaption, sdxNavPaneCaptionHeight);
NavPaneCaptionFontSize := GetIntPropertyByName(NavPaneGroupCaption, sdxNavPaneCaptionFontSize);
end;
procedure TdxSkinInfo.InitializeNavigatorElements;
begin
NavigatorGlyphs := GetElementByName(Group_Editors, sdxNavigatorGlyphs);
NavigatorGlyphsVert := GetElementByName(Group_Editors, sdxNavigatorGlyphsVert);
end;
procedure TdxSkinInfo.InitializePageControlElements;
begin
PageControlHeader := GetElementByName(Group_Tabs, sdxPageControlHeaderTop);
PageControlButtonHorz := GetElementByName(Group_Tabs, sdxPageControlHorz);
PageControlButtonVert := GetElementByName(Group_Tabs, sdxPageControlVert);
if FormContent <> nil then
begin
if PageControlButtonHorz <> nil then
PageControlButtonHorz.Color := FormContent.Color;
if PageControlButtonVert <> nil then
PageControlButtonVert.Color := FormContent.Color;
end;
PageControlPane := GetElementByName(Group_Tabs, sdxPageControlPane);
FillChar(PageControlIndents, SizeOf(PageControlIndents), 0);
if Group_Tabs <> nil then
begin
PageControlIndents[0] := GetElementIntProperty(Group_Tabs, sdxRowIndentFar);
PageControlIndents[1] := GetElementIntProperty(Group_Tabs, sdxRowIndentNear);
PageControlIndents[2] := GetElementIntProperty(Group_Tabs, sdxSelectedHeaderDownGrow);
PageControlIndents[3] := GetElementIntProperty(Group_Tabs, sdxSelectedHeaderHGrow);
PageControlIndents[4] := GetElementIntProperty(Group_Tabs, sdxSelectedHeaderUpGrow);
PageControlIndents[5] := GetElementIntProperty(Group_Tabs, sdxHeaderDownGrow);
end;
end;
procedure TdxSkinInfo.InitializeProgressBarElements;
begin
ProgressBarElements[False, False] := GetElementByName(Group_Editors, sdxProgressBorder);
ProgressBarElements[False, True] := GetElementByName(Group_Editors, sdxProgressBorderVert);
ProgressBarElements[True, False] := GetElementByName(Group_Editors, sdxProgressChunk);
ProgressBarElements[True, True] := GetElementByName(Group_Editors, sdxProgressChunkVert);
end;
procedure TdxSkinInfo.InitializeRadioGroupElements;
begin
RadioGroupButton := GetElementByName(Group_Editors, sdxRadioGroup);
end;
procedure TdxSkinInfo.InitializeRibbonColors;
function GetElementTextColor(AElement: TdxSkinElement): TColor;
begin
if AElement = nil then
Result := clDefault
else
Result := AElement.TextColor;
end;
begin
RibbonExtraPaneColor := GetColorByName(Group_Ribbon, sdxRibbonExtraPaneColor);
RibbonCaptionText[False] := GetElementColorProperty(RibbonFormCaption, sdxTextInactiveColor);
RibbonCaptionText[True] := GetElementTextColor(RibbonFormCaption);
RibbonTabText[True] := GetElementColorProperty(RibbonTab, sdxTextColorSelected);
RibbonTabText[False] := GetElementTextColor(RibbonTab);
RibbonDocumentNameTextColor[True] := GetElementColorProperty(RibbonFormCaption,
sdxRibbonDocumentNameTextColor);
RibbonDocumentNameTextColor[False] := RibbonCaptionText[False];
RibbonStatusBarText := GetElementColorProperty(RibbonStatusBarButton,
sdxTextColorNormal);
RibbonStatusBarTextHot := GetElementColorProperty(RibbonStatusBarButton,
sdxTextColorHot);
RibbonStatusBarTextDisabled := GetElementColorProperty(RibbonStatusBarButton,
sdxTextColorDisabled);
RibbonButtonText[False] := GetElementTextColor(RibbonSmallButton);
RibbonButtonText[True] := GetElementColorProperty(Group_Ribbon,
sdxRibbonButtonDisabledText);
end;
procedure TdxSkinInfo.InitializeRibbonElements;
begin
RibbonApplicationButton := GetElementByName(Group_Ribbon, sdxRibbonApplicationButton);
RibbonApplicationMenuBorders[False] := GetElementByName(Group_Ribbon,
sdxRibbonAppMenuHeaderBackground);
RibbonApplicationMenuBorders[True] := GetElementByName(Group_Ribbon,
sdxRibbonAppMenuFooterBackground);
RibbonCollapsedToolBarBackground := GetElementByName(Group_Ribbon, sdxRibbonCollapsedToolBarBackground);
RibbonCollapsedToolBarGlyphBackground := GetElementByName(Group_Ribbon, sdxRibbonCollapsedToolBarGlyphBackground);
RibbonFormCaption := GetElementByName(Group_Ribbon, sdxRibbonFormCaption);
RibbonFormBottom[False] := GetElementByName(Group_Ribbon, sdxRibbonFormBottom);
RibbonFormBottom[True] := GetElementByName(Group_Ribbon, sdxRibbonDialogFrameBottom);
RibbonFormLeft[False] := GetElementByName(Group_Ribbon, sdxRibbonFormFrameLeft);
RibbonFormLeft[True] := GetElementByName(Group_Ribbon, sdxRibbonDialogFrameLeft);
RibbonFormRight[False] := GetElementByName(Group_Ribbon, sdxRibbonFormFrameRight);
RibbonFormRight[True] := GetElementByName(Group_Ribbon, sdxRibbonDialogFrameRight);
RibbonTab := GetElementByName(Group_Ribbon, sdxRibbonTabHeaderPage);
RibbonTabPanel := GetElementByName(Group_Ribbon, sdxRibbonTabPanel);
RibbonTabPanelGroupButton := GetElementByName(Group_Ribbon, sdxRibbonTabPanelGroupButton);
RibbonTabGroup := GetElementByName(Group_Ribbon, sdxRibbonTabGroup);
RibbonTabGroupHeader := GetElementByName(Group_Ribbon, sdxRibbonTabGroupHeader);
RibbonGalleryBackground := GetElementByName(Group_Ribbon, sdxRibbonGalleryBackground);
RibbonGalleryButtonDown := GetElementByName(Group_Ribbon, sdxRibbonGalleryButtonDown);
RibbonGalleryButtonDropDown := GetElementByName(Group_Ribbon, sdxRibbonGalleryButtonDropDown);
RibbonGalleryButtonUp := GetElementByName(Group_Ribbon, sdxRibbonGalleryButtonUp);
RibbonGalleryGroupCaption := GetElementByName(Group_Ribbon, sdxRibbonGalleryGroupCaption);
RibbonGalleryPane := GetElementByName(Group_Ribbon, sdxRibbonGalleryPane);
RibbonGallerySizingPanel := GetElementByName(Group_Ribbon, sdxRibbonGallerySizingPanel);
RibbonGallerySizeGrips := GetElementByName(Group_Ribbon, sdxRibbonGallerySizeGrips);
RibbonHeaderBackground := GetElementByName(Group_Ribbon, sdxRibbonHeaderBackground);
RibbonSmallButton := GetElementByName(Group_Ribbon, sdxRibbonSmallButton);
RibbonSplitButtonLeft := GetElementByName(Group_Ribbon, sdxRibbonSplitButtonLeft);
RibbonSplitButtonRight := GetElementByName(Group_Ribbon, sdxRibbonSplitButtonRight);
RibbonLargeButton := GetElementByName(Group_Ribbon, sdxRibbonLargeButton);
RibbonLargeSplitButtonTop := GetElementByName(Group_Ribbon, sdxRibbonLargeSplitButtonTop);
RibbonLargeSplitButtonBottom := GetElementByName(Group_Ribbon, sdxRibbonLargeSplitButtonBottom);
RibbonButtonArrow := GetElementByName(Group_Ribbon, sdxRibbonButtonArrow);
RibbonButtonGroup := GetElementByName(Group_Ribbon, sdxRibbonButtonGroup);
RibbonStatusBarBackground := GetElementByName(Group_Ribbon, sdxRibbonStatusBarBackground);
RibbonStatusBarButton := GetElementByName(Group_Ribbon, sdxRibbonStatusBarButton);
RibbonStatusBarSeparator := GetElementByName(Group_Ribbon, sdxRibbonStatusBarSeparator);
RibbonQuickToolbar[True] := GetElementByName(Group_Ribbon, sdxRibbonQuickToolbarInCaption);
RibbonQuickToolbar[False] := GetElementByName(Group_Ribbon, sdxRibbonQuickToolbarAbove);
RibbonQuickToolbarBelow := GetElementByName(Group_Ribbon, sdxRibbonQuickToolbarBelow);
RibbonQuickToolbarButtonGlyph := GetElementByName(Group_Ribbon, sdxRibbonQuickToolbarButtonGlyph);
RibbonQuickToolbarDropDown := GetElementByName(Group_Ribbon, sdxRibbonQuickToolbarDropDown);
RibbonQuickToolbarGlyph := GetElementByName(Group_Ribbon, sdxRibbonQuickToolbarGlyph);
RibbonButtonGroupButton := GetElementByName(Group_Ribbon, sdxRibbonButtonGroupButton);
RibbonButtonGroupSeparator := GetElementByName(Group_Ribbon, sdxRibbonButtonGroupSeparator);
RibbonGroupScroll[True] := GetElementByName(Group_Ribbon, sdxRibbonTabGroupLeftScroll);
RibbonGroupScroll[False] := GetElementByName(Group_Ribbon, sdxRibbonTabGroupRightScroll);
InitializeRibbonProperties;
InitializeRibbonColors;
end;
procedure TdxSkinInfo.InitializeRibbonProperties;
var
AIndex: Boolean;
begin
for AIndex := False to True do
if RibbonQuickToolbar[AIndex] <> nil then
with RibbonQuickToolbar[AIndex] do
begin
RibbonQATCustomizeButtonOutsizeQAT[AIndex] :=
GetPropertyByName(sdxRibbonQATCustomizeButtonOutsideQAT) as TdxSkinBooleanProperty;
RibbonQATIndentBeforeCustomizeButton[AIndex] :=
GetPropertyByName(sdxRibbonQATIndentBeforeCustomizeItem) as TdxSkinIntegerProperty;
end;
RibbonCaptionFontDelta := GetIntPropertyByName(RibbonFormCaption, sdxCaptionFontDelta);
if Group_Ribbon = nil then
FillChar(RibbonIndents, SizeOf(RibbonIndents), 0)
else
begin
RibbonIndents[0] := GetElementIntProperty(RibbonApplicationButton,
sdxRibbonAppButtonRightIndent);
RibbonIndents[1] := GetElementIntProperty(RibbonQuickToolbar[True],
sdxRibbonQuickAccessToolbarOffset);
RibbonIndents[2] := GetElementIntProperty(Group_Ribbon, sdxRibbonTabHeaderDownGrowIndent);
end;
end;
procedure TdxSkinInfo.InitializeScrollBarElements;
procedure SetInfo(AHorz: Boolean; APart: TcxScrollBarPart;
AElement: TdxSkinElement; AImageIndex: Integer = 0);
begin
FreeAndNil(ScrollBar_Elements[AHorz, APart]);
if Skin <> nil then
ScrollBar_Elements[AHorz, APart] :=
TdxSkinScrollInfo.Create(AElement, AImageIndex, APart);
end;
var
AElement: TdxSkinElement;
begin
// buttons
AElement := GetElementByName(Group_Common, sdxScrollButton);
if FormContent <> nil then
AElement.Color := FormContent.Color; //todo: transparent elements bug
SetInfo(False, sbpLineUp, AElement);
SetInfo(False, sbpLineDown, AElement, 1);
SetInfo(True, sbpLineUp, AElement, 2);
SetInfo(True, sbpLineDown, AElement, 3);
// Thumbnail
SetInfo(False, sbpThumbnail,
GetElementByName(Group_Common, sdxScrollThumbButtonVert));
SetInfo(True, sbpThumbnail,
GetElementByName(Group_Common, sdxScrollThumbButtonHorz));
// Page
AElement := GetElementByName(Group_Common, sdxScrollContentVert);
SetInfo(False, sbpPageUp, AElement);
SetInfo(False, sbpPageDown, AElement);
AElement := GetElementByName(Group_Common, sdxScrollContentHorz);
SetInfo(True, sbpPageUp, AElement);
SetInfo(True, sbpPageDown, AElement);
end;
procedure TdxSkinInfo.InitializeSchedulerElements;
procedure HideElementUsage(AElement: TdxSkinElement);
begin
if AElement <> nil then
AElement.Tag := 0;
end;
begin
SchedulerTimeGridHeader[False] := GetElementByName(Group_Scheduler,
sdxSchedulerTimeGridHeader);
SchedulerTimeGridHeader[True] := GetElementByName(Group_Scheduler,
sdxSchedulerTimeGridHeaderSelected);
SchedulerTimeLine := GetElementByName(Group_Scheduler, sdxSchedulerTimeLine);
SchedulerTimeRuler := GetElementByName(Group_Scheduler, sdxSchedulerTimeRuler);
SchedulerMoreButton := GetElementByName(Group_Scheduler, sdxSchedulerMoreButton);
SchedulerAppointment[False] := GetElementByName(Group_Scheduler, sdxSchedulerAppointmentRight);
SchedulerAppointment[True] := GetElementByName(Group_Scheduler, sdxSchedulerAppointment);
SchedulerAllDayArea[False] := GetElementByName(Group_Scheduler, sdxSchedulerAllDayArea);
SchedulerAllDayArea[True] := GetElementByName(Group_Scheduler, sdxSchedulerAllDayAreaSelected);
SchedulerCurrentTimeIndicator := GetElementByName(Group_Scheduler,
sdxSchedulerCurrentTimeIndicator);
SchedulerAppointmentShadow[False] := GetElementByName(Group_Scheduler,
sdxSchedulerAppointmentBottomShadow);
SchedulerAppointmentShadow[True] := GetElementByName(Group_Scheduler,
sdxSchedulerAppointmentRightShadow);
SchedulerAppointmentBorderSize := GetIntPropertyByName(SchedulerAppointment[True],
sdxSchedulerAppointmentBorderSize);
SchedulerAppointmentMask := GetElementByName(Group_Scheduler, sdxSchedulerAppointmentMask);
SchedulerAppointmentBorder := GetColorByName(SchedulerAppointment[True],
sdxSchedulerSeparatorColor);
SchedulerNavigationButtons[False] := GetElementByName(Group_Scheduler, sdxSchedulerNavButtonPrev);
SchedulerNavigationButtons[True] := GetElementByName(Group_Scheduler, sdxSchedulerNavButtonNext);
SchedulerNavigationButtonsArrow[False] := GetElementByName(Group_Scheduler,
sdxSchedulerNavButtonPrevArrow);
SchedulerNavigationButtonsArrow[True] := GetElementByName(Group_Scheduler,
sdxSchedulerNavButtonNextArrow);
// TODO: Its a scheduler3 element - ACreateIfEmpty = False
SchedulerTimeGridCurrentTimeIndicator := GetElementByName(Group_Scheduler,
sdxSchedulerTimeGridCurrentTimeIndicator, False);
end;
procedure TdxSkinInfo.InitializeSizeGripElements;
begin
SizeGrip := GetElementByName(Group_Common, sdxSizeGrip);
end;
procedure TdxSkinInfo.InitializeSplitterElements;
begin
Splitter[False] := GetElementByName(Group_Common, sdxSplitterVert);
Splitter[True] := GetElementByName(Group_Common, sdxSplitterHorz);
end;
procedure TdxSkinInfo.InitializeToolTipElements;
begin
ScreenTipWindow := GetElementByName(Group_Bars, sdxScreenTipWindow);
ScreenTipItem := GetColorByName(ScreenTipWindow, sdxScreenTipItem);
ScreenTipSeparator := GetElementByName(Group_Bars, sdxScreenTipSeparator);
ScreenTipTitleItem := GetColorByName(ScreenTipWindow, sdxScreenTipTitleItem);
end;
procedure TdxSkinInfo.InitializeTrackBarElements;
begin
TrackBarTrack[True] := GetElementByName(Group_Editors, sdxTrackBarTrack);
TrackBarTrack[False] := GetElementByName(Group_Editors, sdxTrackBarTrackVert);
TrackBarThumb[True, tbtaDown] := GetElementByName(Group_Editors, sdxTrackBarThumb);
TrackBarThumb[True, tbtaUp] := GetElementByName(Group_Editors, sdxTrackBarThumbUp);
TrackBarThumb[True, tbtaBoth] := GetElementByName(Group_Editors, sdxTrackBarThumbBoth);
TrackBarThumb[False, tbtaDown] := GetElementByName(Group_Editors, sdxTrackBarThumbVert);
TrackBarThumb[False, tbtaUp] := GetElementByName(Group_Editors, sdxTrackBarThumbVertUp);
TrackBarThumb[False, tbtaBoth] := GetElementByName(Group_Editors, sdxTrackBarThumbVertBoth);
end;
procedure TdxSkinInfo.InitializeSkinInfo;
begin
InitializeGroups;
InitializeBarElements;
InitializeFormElements;
InitializeDockControlElements;
InitializeButtonElements;
InitializeFooterElements;
InitializeCheckboxElements;
InitializeClockElements;
InitializeEditButtonElements;
InitializeGroupBoxElements;
InitializeGridElements;
InitializeIndicatorImages;
InitializeNavBarElements;
InitializeNavigatorElements;
InitializeSchedulerElements;
InitializeHeaderElements;
InitializeFilterElements;
InitializePageControlElements;
InitializeProgressBarElements;
InitializeRadioGroupElements;
InitializeScrollBarElements;
InitializeRibbonElements;
InitializeSizeGripElements;
InitializeSplitterElements;
InitializeTrackBarElements;
InitializeToolTipElements;
InitializeColors;
end;
procedure TdxSkinInfo.FinalizeScrollBarElements;
var
AHorz: Boolean;
APart: TcxScrollBarPart;
begin
for AHorz := False to True do
for APart := Low(TcxScrollBarPart) to High(TcxScrollBarPart) do
FreeAndNil(ScrollBar_Elements[AHorz, APart]);
end;
procedure TdxSkinInfo.FinalizeSkinInfo;
begin
FinalizeScrollBarElements;
end;
function TdxSkinInfo.GetSkin: TdxSkin;
begin
Result := Skin;
end;
procedure TdxSkinInfo.SkinChanged(Sender: TdxSkin);
begin
FinalizeSkinInfo;
InitializeSkinInfo;
end;
procedure TdxSkinInfo.SetSkin(ASkin: TdxSkin);
begin
if ASkin <> Skin then
begin
if Skin <> nil then
begin
FinalizeSkinInfo;
Skin.RemoveListener(Self);
end;
FSkin := ASkin;
if Skin <> nil then
Skin.AddListener(Self);
InitializeSkinInfo;
end;
end;
{ TdxSkinScrollInfo }
constructor TdxSkinScrollInfo.Create(AElement: TdxSkinElement;
AImageIndex: Integer; APart: TcxScrollBarPart);
begin
FElement := AElement;
FImageIndex := AImageIndex;
end;
function TdxSkinScrollInfo.Draw(DC: HDC; const R: TRect; AImageIndex: Integer;
AState: TdxSkinElementState): Boolean;
begin
Result := Element <> nil;
if Result then
Element.Draw(DC, R, AImageIndex, AState);
end;
end.