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 + -
显示快捷键?