본문 바로가기

Delphi/정보나누기

dxNavbar AccordionView에서 SkinEditor의 옵션 적용이 안 될 때

DevExpress의 SkinEditor를 통해 Navbar의 스킨옵션들을 수정하였으나,

실제 디자인타임에선 제대로 적용되지 않아 별도 커스텀 스타일로 만들었습니다.

 

unit dxDevelopistSkinsNavBarPainter;

interface

uses
  Vcl.Graphics

, dxNavBar
, dxNavBarSkinBasedViews
, dxSkinsdxNavBarAccordionViewPainter
;

const
  dxDevelopistNavBarAccordionView = 9999; //고유ID

type
  TdxDevelopistNavBarAccordionViewInfo = class(TdxNavBarAccordionViewInfo)
  protected
    function GetGroupCaptionTextIndent: Integer; override;
  end;

  TdxDevelopistNavBarAccordionLinkViewInfo = class(TdxNavBarAccordionLinkViewInfo)
  public
    function Font: TFont; override;
  end;

  TdxDevelopistNavBarAccordionGroupViewInfo = class(TdxNavBarAccordionGroupViewInfo)
  public
    function CaptionFont: TFont; override;
  end;

  TdxDevelopistNavBarAccordionViewPainter = class(TdxNavBarAccordionViewPainter)
  protected
    class function GetViewInfoClass: TdxNavBarViewInfoClass; override;
    class function GetLinkViewInfoClass: TdxNavBarLinkViewInfoClass; override;
    class function GetGroupViewInfoClass: TdxNavBarGroupViewInfoClass; override;
  end;

implementation

uses
  dxNavBarViewsFact
, dxNavBarStyles
;

{ TdxDevelopistNavBarAccordionViewPainter }

class function TdxDevelopistNavBarAccordionViewPainter.GetViewInfoClass: TdxNavBarViewInfoClass;
begin
  Result := TdxDevelopistNavBarAccordionViewInfo;
end;

class function TdxDevelopistNavBarAccordionViewPainter.GetLinkViewInfoClass: TdxNavBarLinkViewInfoClass;
begin
  Result := TdxDevelopistNavBarAccordionLinkViewInfo;
end;

class function TdxDevelopistNavBarAccordionViewPainter.GetGroupViewInfoClass: TdxNavBarGroupViewInfoClass;
begin
  Result := TdxDevelopistNavBarAccordionGroupViewInfo;
end;

{ TdxDevelopistNavBarAccordionViewInfo }

function TdxDevelopistNavBarAccordionViewInfo.GetGroupCaptionTextIndent: Integer;
begin
  Result := ScaleFactor.Apply(15); // TextIndent Value
end;

{ TdxDevelopistNavBarAccordionLinkViewInfo }

function TdxDevelopistNavBarAccordionLinkViewInfo.Font: TFont;
begin
  Result := FCaptionFont;
  Result.Name := 'MyFontName';
  Result.Size := ScaleFactor.Apply(10);
end;

{ TdxDevelopistNavBarAccordionGroupViewInfo }

function TdxDevelopistNavBarAccordionGroupViewInfo.CaptionFont: TFont;
begin
  Result := FCaptionFont;
  Result.Name := 'MyFontName';
  Result.Size := ScaleFactor.Apply(10);
end;

initialization
  dxNavBarViewsFactory.RegisterView(dxDevelopistNavBarAccordionView, 'Developist-AccordionView', TdxDevelopistNavBarAccordionViewPainter);

finalization
  UnRegisterView(dxDevelopistNavBarAccordionView);

end.
반응형