dxskininfo.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,197 行 · 第 1/4 页
PAS
1,197 行
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;
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 := Skin.GetColorByName(sdxSkinsDCHiddenBarTextColor);
EditorBackgroundColors[False] := GetColorByName(Group_Editors, sdxSkinsEditorBackgroundColor);
EditorBackgroundColors[True] := GetColorByName(Group_Editors, sdxSkinsEditorBackgroundDisabledColor);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?