dxskininfo.pas

来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 1,197 行 · 第 1/4 页

PAS
1,197
字号
    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.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?