⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dxribbon.pas

📁 胜天进销存源码,国产优秀的进销存
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    function GetScrollWidth: Integer;
    function GetTabViewInfo(Index: Integer): TdxRibbonTabViewInfo;
    procedure RemoveScrolling;
    procedure SetScrollPosition(Value: Integer);
  protected
    procedure CalculateComplexTabLayout; virtual;
    procedure CalculateSimpleTabLayout; virtual;
    procedure CalculateScrollingTabLayout; virtual;
    procedure BalancedReduce(ATotalDelta: Integer);
    procedure DrawScrollButton(ACanvas: TcxCanvas; const ABounds: TRect;
      AButton: TdxRibbonScrollButton; APressed, AHot: Boolean); virtual;
    procedure SimpleReduce(ATotalDelta: Integer);
    property Owner: TdxRibbonViewInfo read FOwner;
  public
    constructor Create(AOwner: TdxRibbonViewInfo);
    destructor Destroy; override;
    procedure Calculate(const ABounds: TRect); virtual;
    procedure Clear; override;
    function GetHitInfo(var AHitInfo: TdxRibbonHitInfo; X, Y: Integer): Boolean;
    function GetRealBounds: TRect;
    procedure Invalidate;
    procedure InvalidateScrollButtons;
    procedure MakeTabVisible(ATab: TdxRibbonTab);
    procedure Paint(ACanvas: TcxCanvas);
    procedure UpdateDockControls;
    procedure UpdateTabList;

    property Bounds: TRect read FBounds;
    property Items[Index: Integer]: TdxRibbonTabViewInfo read GetTabViewInfo; default;
    property NeedShowHint: Boolean read FNeedShowHint;
    property Painter: TdxRibbonPainter read GetPainter;
    property ScrollButtonBounds[Index: TdxRibbonScrollButton]: TRect read GetScrollButtonBounds;
    property ScrollButtonHot[Index: TdxRibbonScrollButton]: Boolean read GetScrollButtonHot;
    property ScrollButtonPressed[Index: TdxRibbonScrollButton]: Boolean read GetScrollButtonPressed;
    property ScrollButtons: TdxRibbonScrollButtons read FScrollButtons;
    property ScrollPosition: Integer read FScrollPosition write SetScrollPosition;
  end;

  { TdxRibbonViewInfo }

  TdxRibbonViewInfo = class
  private
    FApplicationButtonBounds: TRect;
    FApplicationButtonFadingHelper: TdxRibbonApplicationButtonFadingHelper;
    FApplicationButtonImageBounds: TRect;
    FBounds: TRect;
    FDrawEmptyRibbon: Boolean;
    FFont: TFont;
    FFormCaptionBounds: TRect;
    FHelpButtonBounds: TRect;
    FHelpButtonFadingHelper: TdxRibbonHelpButtonFadingHelper;
    FGroupsDockControlSiteBounds: TRect;
    FMDIButtonBounds: array[TdxBarMDIButton] of TRect;
    FMDIButtonFadingHelpers: array[TdxBarMDIButton] of TdxRibbonMDIButtonFadingHelper;
    FQATBarControlSize: TSize;
    FQuickAccessToolbarBounds: TRect;
    FRibbon: TdxCustomRibbon;
    FSupportNonClientDrawing: Boolean;
    FTabGroupsDockControlBounds: TRect;
    FTabsViewInfo: TdxRibbonTabsViewInfo;
    FUseGlass: Boolean;
    procedure CheckHelpButtonHitTest(var AHitTest: TdxRibbonHitTest; X: Integer; Y: Integer);
    procedure CheckMDIButtonsHitTest(var AHitTest: TdxRibbonHitTest; X: Integer; Y: Integer);
    function GetButtonState(AButton: TdxRibbonHitTest): TdxBorderIconState;
    function GetCanvas: TcxCanvas;
    function GetGroupsDockControlSiteViewInfo: TdxRibbonGroupsDockControlSiteViewInfo;
    function GetIsFormCaptionActive: Boolean;
    function GetMDIButtonState(AButton: TdxBarMDIButton): TdxBorderIconState;
    function GetPainter: TdxRibbonPainter;
    function GetQATDockControl: TdxRibbonQuickAccessDockControl;
    function GetScrollButtonWidth: Integer;
    function GetTabsVerticalOffset: Integer;
    procedure UpdateGroupsDockControlSite;
  protected
    procedure CalculateApplicationButton; virtual;
    procedure CalculateQuickAccessToolbar; virtual;
    procedure CalculateRibbonFormCaption; virtual;
    procedure CalculateTabGroups; virtual;
    procedure CalculateTabs; virtual;
    procedure CheckButtonsHitTest(var AHitTest: TdxRibbonHitTest; X: Integer; Y: Integer);
    function GetRibbonHeight: Integer; virtual;

    function GetApplicationButtonBounds: TRect; virtual;
    function GetApplicationButtonGlyphSize: TSize; virtual;
    function GetApplicationButtonImageBounds: TRect; virtual;
    function GetApplicationButtonOffset: TRect; virtual;
    function GetApplicationButtonRegion: HRGN; virtual;
    function GetApplicationButtonSize: TSize; virtual;
    function GetApplicationButtonState: TdxApplicationButtonState; virtual;
    function GetNonClientAreaHeight: Integer; virtual;
    //form caption
    function GetCaption: string; virtual;
    function GetDocumentName: string; virtual;
    function GetRibbonFormCaptionClientBounds: TRect; virtual;
    function GetRibbonFormCaptionTextBounds: TRect; virtual;
    //QuickAccessToolbar
    function GetQATAvailWidth: Integer;
    function GetQATBarControlSize: TSize; virtual;
    function GetQATBounds: TRect; virtual;
    function GetQATHeight: Integer; virtual;
    function GetQATLeft: Integer; virtual;
    function GetQATOverrideWidth(AIgnoreHidden: Boolean = False): Integer;
    function GetQATTop: Integer; virtual;
    function GetQATWidth: Integer; virtual;
    function GetQATDockControlBounds: TRect; virtual;
    function GetQATDockControlOffset(AIgnoreHidden: Boolean = False): TRect; virtual;
    //TabGroups
    function GetGroupsDockControlSiteBounds: TRect; virtual;
    function GetTabGroupsDockControlBounds: TRect; virtual;
    function GetTabGroupsDockControlOffset: TRect; virtual;
    function GetTabGroupsHeight(AIgnoreHidden: Boolean = False): Integer; virtual;
    //Tabs
    function GetTabsBounds: TRect; virtual;
    function GetTabsHeight: Integer; virtual;
    function GetTabViewInfoClass: TdxRibbonTabViewInfoClass; virtual;
    //MDI support
    procedure CalculateMDIButtons;
    procedure DrawMDIButtons(ACanvas: TcxCanvas);
    function HasMDIButtons: Boolean;
    procedure InvalidateMDIButtons;
    function IsMDIButtonEnabled(AButton: TdxBarMDIButton; AState: Integer): Boolean;

    procedure CalculateHelpButton;
    function CanShowBarControls(AIgnoreHidden: Boolean = False): Boolean;
    procedure DrawHelpButton(ACanvas: TcxCanvas);
    procedure DrawRibbonBackground(ACanvas: TcxCanvas);
    function HasHelpButton: Boolean;
    procedure InvalidateHelpButton;
    function IsNeedDrawBottomLine: Boolean;
    function IsNeedHideControl: Boolean;
    function IsQATAtBottom: Boolean;
    procedure SetSize;
    procedure UpdateQATDockControl;

    function GetPainterClass: TdxRibbonPainterClass; virtual;

    property Canvas: TcxCanvas read GetCanvas;
    property DrawEmptyRibbon: Boolean read FDrawEmptyRibbon;
    property QATDockControl: TdxRibbonQuickAccessDockControl read GetQATDockControl;
    property ScrollButtonWidth: Integer read GetScrollButtonWidth;
    property TabsHeight: Integer read GetTabsHeight;
    property UseGlass: Boolean read FUseGlass;
  public
    constructor Create(ARibbon: TdxCustomRibbon); virtual;
    destructor Destroy; override;
    procedure Calculate(const ABounds: TRect); virtual;
    function GetDocumentNameTextColor(AIsActive: Boolean): TColor;
    function GetFormCaptionFont(AIsActive: Boolean): TFont;
    function GetFormCaptionText: TCaption;
    function GetHitInfo(X, Y: Integer): TdxRibbonHitInfo;
    function GetTabAtPos(X, Y: Integer): TdxRibbonTab;
    function IsApplicationButtonVisible(AIgnoreHidden: Boolean = False): Boolean;
    function IsQATAtNonClientArea(AIgnoreHidden: Boolean = False): Boolean;
    function IsQATOnGlass: Boolean;
    function IsQATVisible(AIgnoreHidden: Boolean = False): Boolean;
    function IsTabsVisible(AIgnoreHidden: Boolean = False): Boolean;
    function IsTabGroupsVisible(AIgnoreHidden: Boolean = False): Boolean;
    procedure Paint(ACanvas: TcxCanvas);

    property Bounds: TRect read FBounds;
    property FormCaptionBounds: TRect read FFormCaptionBounds;
    property ApplicationButtonBounds: TRect read FApplicationButtonBounds;
    property ApplicationButtonFadingHelper: TdxRibbonApplicationButtonFadingHelper read FApplicationButtonFadingHelper;
    property ApplicationButtonImageBounds: TRect read FApplicationButtonImageBounds;
    property ApplicationButtonState: TdxApplicationButtonState read GetApplicationButtonState;

    property HelpButtonBounds: TRect read FHelpButtonBounds;
    property HelpButtonFadingHelper: TdxRibbonHelpButtonFadingHelper read FHelpButtonFadingHelper;
    property IsFormCaptionActive: Boolean read GetIsFormCaptionActive;
    property Painter: TdxRibbonPainter read GetPainter;
    property QuickAccessToolbarBounds: TRect read FQuickAccessToolbarBounds;
    property Ribbon: TdxCustomRibbon read FRibbon;
    property SupportNonClientDrawing: Boolean read FSupportNonClientDrawing;

    property GroupsDockControlSiteBounds: TRect read FGroupsDockControlSiteBounds;
    property TabGroupsDockControlBounds: TRect read FTabGroupsDockControlBounds;

    property GroupsDockControlSiteViewInfo: TdxRibbonGroupsDockControlSiteViewInfo read GetGroupsDockControlSiteViewInfo;
    property TabsViewInfo: TdxRibbonTabsViewInfo read FTabsViewInfo;
  end;

  { TdxRibbonBarPainter }

  TdxRibbonBarPainter = class(TdxBarSkinnedPainter)
  private
    FCollapsedGroupElementSizeDenominator: Integer;
    FCollapsedGroupElementSizeNumerator: Integer;
    FDrawParams: TdxBarButtonLikeControlDrawParams;
    FRibbon: TdxCustomRibbon;
    function GetCollapsedGroupGlyph(ABarControl: TdxBarControl): TBitmap;
    function GetCollapsedGroupGlyphBackgroundSize(ABarControl: TdxBarControl): TSize;
    function GetCollapsedGroupGlyphSize(ABarControl: TdxBarControl): TSize;
    function GetGroupState(ABarControl: TdxBarControl): Integer;
    function InternalGetGroupCaptionHeight(ATextHeight: Integer): Integer;
  protected
    procedure DrawCollapsedToolbarBackgroundPart(ABarControl: TdxRibbonGroupBarControl;
      ACanvas: TcxCanvas; AGroupState: Integer);
    procedure DrawCollapsedToolbarContentPart(ABarControl: TdxRibbonGroupBarControl;
      ACanvas: TcxCanvas; AGroupState: Integer);
    procedure DrawToolbarContentPart(ABarControl: TdxBarControl; ACanvas: TcxCanvas); override;
    procedure DrawToolbarNonContentPart(ABarControl: TdxBarControl; DC: HDC); override;
    function GetCollapsedGroupWidth(ABarControl: TdxRibbonGroupBarControl): Integer; virtual;
    function GetGroupCaptionHeight(ACaptionFont: TFont): Integer; virtual;
    function GetCollapsedGroupCaptionRect(const AGroupRect: TRect): TRect; virtual;
    function GetGroupMinWidth(ABarControl: TdxRibbonGroupBarControl): Integer; virtual;
    property DrawParams: TdxBarButtonLikeControlDrawParams read FDrawParams;
  public
    constructor Create(AData: Integer); override;
    destructor Destroy; override;
    procedure BarDrawBackground(ABarControl: TdxBarControl; ADC: HDC;
      const ADestRect: TRect; const ASourceRect: TRect; ABrush: HBRUSH;
      AColor: TColor); override;
    function BarMarkRect(ABarControl: TdxBarControl): TRect; override;
    function BarMarkItemRect(ABarControl: TdxBarControl): TRect; override;
    function GetGroupRowHeight(AIconSize: Integer; AGroupFont: TFont): Integer;
    function GetToolbarContentOffsets(ABar: TdxBar;
      ADockingStyle: TdxBarDockingStyle; AHasSizeGrip: Boolean): TRect; override;
    function SubMenuControlBeginGroupSize: Integer; override;
    function SubMenuGetSeparatorSize: Integer; override;
    property Ribbon: TdxCustomRibbon read FRibbon;
  end;

  { TdxCustomRibbonDockControl }

  TdxCustomRibbonDockControl = class(TdxBarDockControl)
  private
    procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED;
    procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
  protected
    function AllowUndockWhenLoadFromIni: Boolean; override;
    procedure FillBackground(DC: HDC; const ADestR, ASourceR: TRect; ABrush: HBRUSH; AColor: TColor); override;
    function IsDrawDesignBorder: Boolean; override;
    function IsTransparent: Boolean; override;
    function IsNeedRedrawBarControlsOnPaint: Boolean; virtual;
    procedure Paint; override;
    procedure VisibleChanged; virtual;
  public
    procedure UpdateColorScheme; virtual;
  end;

  { IdxRibbonGroupViewInfo }

  TdxRibbonGroupOffsetsInfo = record
    ButtonGroupOffset: Integer;
    ContentLeftOffset: Integer;
    ContentRightOffset: Integer;
  end;

  IdxRibbonGroupViewInfo = interface
  ['{A2CAD367-1836-4FA7-8730-8E7531463C8C}']
    procedure AddSeparator(const Value: TdxBarItemSeparatorInfo);
    procedure DeleteSeparators;
    function GetContentSize: TSize;
    function GetItemControlCount: Integer;
    function GetItemControlViewInfo(AIndex: Integer): IdxBarItemControlViewInfo;
    function GetMinContentWidth: Integer;
    function GetOffsetsInfo: TdxRibbonGroupOffsetsInfo;
    function GetSeparatorCount: Integer;
    function GetSeparatorInfo(AIndex: Integer): TdxBarItemSeparatorInfo;
    procedure SetContentSize(const Value: TSize);
    procedure SetSeparatorInfo(AIndex: Integer;
      const Value: TdxBarItemSeparatorInfo);
  end;

  { IdxRibbonGroupLayoutCalculator }

  IdxRibbonGroupLayoutCalculator = interface
  ['{894AC146-F69A-4ED2-9293-AA54AAAE1189}']
    procedure CalcInit(AGroupViewInfo: IdxRibbonGroupViewInfo);
    procedure CalcLayout(AGroupViewInfo: IdxRibbonGroupViewInfo);
    function CollapseMultiColumnItemControls(
      AGroupViewInfo: IdxRibbonGroupViewInfo): Boolean;
    function DecreaseMultiColumnItemControlsColumnCount(
      AGroupViewInfo: IdxRibbonGroupViewInfo): Boolean;
    function Reduce(AGroupViewInfo: IdxRibbonGroupViewInfo;
      AUpToViewLevel: TdxBarItemRealViewLevel): Boolean;
    procedure ReduceInit(AGroupViewInfo: IdxRibbonGroupViewInfo);
  end;

  { TdxRibbonGroupsDockControl }

  TdxRibbonGroupsDockControl = class(TdxCustomRibbonDockControl)
  private
    FTab: TdxRibbonTab;
    procedure DesignMenuClick(Sender: TObject);
    function GetRibbon: TdxCustomRibbon;
    procedure InitDesignMenu(AItemLinks: TdxBarItemLinks);
    procedure ShowDesignMenu;
  protected
    FViewInfo: TdxRibbonGroupsDockControlViewInfo;
    procedure AlignControls(AControl: TControl; var Rect: TRect); override;
    procedure CalcRowToolbarPositions(ARowIndex: Integer; AClientSize: Integer); override;
    procedure DblClick; override;
    procedure FillBackground(DC: HDC; const ADestR, ASourceR: TRect; ABrush: HBRUSH; AColor: TColor); override;
    function GetAccessibilityHelperClass: TdxBarAccessibilityHelperClass; override;
    function GetDockedBarControlClass: TdxBarControlClass; override;
    function GetPainter: TdxBarPainter; override;

⌨️ 快捷键说明

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