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

📄 dxribbon.pas

📁 胜天进销存源码,国产优秀的进销存
💻 PAS
📖 第 1 页 / 共 5 页
字号:

  { TdxRibbonGroupBarControl }

  TdxRibbonGroupBarControl = class(TdxRibbonCustomBarControl,
  {$IFNDEF DELPHI6}
    IUnknown,
  {$ENDIF}
    IdxFadingObject
  )
  private
    FFadingElementData: IdxFadingElementData;
    FGroup: TdxRibbonTabGroup;
    FRibbon: TdxCustomRibbon;
    procedure DesignMenuClick(Sender: TObject);
    procedure DrawBarParentBackground(ACanvas: TcxCanvas);
    procedure DrawCaptionButtons(ACanvas: TcxCanvas);
    procedure DrawSelectedFrame(DC: HDC);
    procedure FillParentBackground;
    function GetCollapsed: Boolean;
    function GetGroupDesignRect: TRect;
    function GetViewInfo: TdxRibbonGroupBarControlViewInfo;
    procedure InitDesignMenu(AItemLinks: TdxBarItemLinks);
    procedure PaintGroupBackground(ACanvas: TcxCanvas);
    procedure PaintGroupCaptionText(ACanvas: TcxCanvas);
    procedure PaintGroupMark(ACanvas: TcxCanvas);
    procedure ShowGroupDesignMenu;
    procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
    procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
  protected
    //IdxFadingObject
    function IdxFadingObject.CanFade = FadingCanFade;
    procedure IdxFadingObject.DrawFadeImage = FadingDrawFadeImage;
    procedure IdxFadingObject.GetFadingParams = FadingGetFadingParams;

    procedure FadingBegin(AData: IdxFadingElementData);
    function FadingCanFade: Boolean;
    procedure FadingDrawFadeImage;
    procedure FadingEnd;
    procedure FadingGetFadingParams(
      out AFadeOutImage, AFadeInImage: TcxBitmap;
      var AFadeInAnimationFrameCount, AFadeInAnimationFrameDelay: Integer;
      var AFadeOutAnimationFrameCount, AFadeOutAnimationFrameDelay: Integer);

    //methods
    procedure AdjustHintWindowPosition(var APos: TPoint; const ABoundsRect: TRect; AHeight: Integer); override;
    procedure CalcLayout; override;
    function CanProcessShortCut: Boolean; override;
    procedure CaptionChanged; override;
    procedure DoHideAll; override;
    procedure DoNCPaint(DC: HDC); override;
    procedure DoOpaqueNCPaint(DC: HDC);
    procedure DoPaint; override;
    procedure DoTransparentNCPaint(DC: HDC);
    procedure DrawContentBackground; override;

    procedure DoBarMouseDown(Button: TMouseButton; Shift: TShiftState;
      const APoint: TPoint; AItemControl: TdxBarItemControl; APointInClientRect: Boolean); override;

    function ClickAtHeader: Boolean; override;
    function GetAccessibilityHelperClass: TdxBarAccessibilityHelperClass; override;
    function GetMarkDrawState: TdxBarMarkState; override;
    function GetMoreButtonsHint: string; override;
    function GetQuickControlClass: TdxBarControlClass; override;
    function GetRibbon: TdxCustomRibbon; override;
    function GetViewInfoClass: TCustomdxBarControlViewInfoClass; override;
    procedure GlyphChanged; override;
    procedure InitQuickControl(AQuickControlItemLinks: TdxBarItemLinks); override;
    procedure MakeItemControlFullyVisible(AItemControl: TdxBarItemControl); override;
    function MarkExists: Boolean; override;
    procedure ViewStateChanged(APrevValue: TdxBarViewState); override;
    procedure UpdateCaptionButtons(ACaptionButton: TdxBarCaptionButton); override;

    property ViewInfo: TdxRibbonGroupBarControlViewInfo read GetViewInfo;
  public
    constructor CreateEx(AOwner: TComponent; ABar: TdxBar); override;
    destructor Destroy; override;
    procedure CloseUp; override;
    property Collapsed: Boolean read GetCollapsed;
    property Group: TdxRibbonTabGroup read FGroup;
  end;

  TdxRibbonGroupKeyTipsBaseLinePositions = record
    BottomKeyTipsBaseLinePosition: Integer;
    Calculated: Boolean;
    RowKeyTipsBaseLinePositions: array of Integer;
  end;

  { TdxRibbonGroupBarControlViewInfo }

  TdxRibbonGroupBarControlViewInfo = class(TCustomdxBarControlViewInfo)
  private
    FCollapsed: Boolean;
    FContentSize: TSize;
    FGroupRowHeight: Integer;
    FKeyTipsBaseLinePositions: TdxRibbonGroupKeyTipsBaseLinePositions;
    FLayoutCalculator: IdxRibbonGroupLayoutCalculator;
    FNonContentAreaSize: TSize;
    function CreateCalculateHelper: IdxRibbonGroupViewInfo;
    function GetBarControl: TdxRibbonGroupBarControl;
    function GetBottomKeyTipsBaseLinePosition: Integer;
    function GetRowKeyTipsBaseLinePosition(ARowIndex: Integer): Integer;
    function GetSize: TSize;
  protected
    procedure CalculateKeyTipsBaseLinePositions;
    function CreateLayoutCalculator: IdxRibbonGroupLayoutCalculator; virtual;
    procedure DoCalculateKeyTipsBaseLinePositions; virtual;
    function GetNonContentAreaSize: TSize; virtual;
    procedure UpdateItemRects;
    property ContentSize: TSize read FContentSize write FContentSize;
    property LayoutCalculator: IdxRibbonGroupLayoutCalculator read FLayoutCalculator;
  public
    procedure Calculate; override;
    procedure CalculateFinalize; virtual;
    procedure CalculateInit; virtual;
    function CollapseMultiColumnItemControls: Boolean;
    function DecreaseMultiColumnItemControlsColumnCount: Boolean;
    function Reduce(AUpToViewLevel: TdxBarItemRealViewLevel): Boolean;
    procedure ReduceInit;
    property BarControl: TdxRibbonGroupBarControl read GetBarControl;
    property Collapsed: Boolean read FCollapsed write FCollapsed;
    property Size: TSize read GetSize;

    property BottomKeyTipsBaseLinePosition: Integer read GetBottomKeyTipsBaseLinePosition;
    property RowKeyTipsBaseLinePositions[ARowIndex: Integer]: Integer
      read GetRowKeyTipsBaseLinePosition;
  end;

  { TdxRibbonGroupBarControlDesignHelper }

  TdxRibbonGroupBarControlDesignHelper = class(TCustomdxBarControlDesignHelper)
  public
    class function GetForbiddenActions: TdxBarCustomizationActions; override;
  end;

  { TdxRibbonCollapsedGroupPopupBarControl }

  TdxRibbonCollapsedGroupPopupBarControl = class(TdxRibbonGroupBarControl)
  protected
    function GetCaption: TCaption; override;
    function GetPainter: TdxBarPainter; override;
    function GetSizeForPopup: TSize; override;
    function GetSizeForWidth(AStyle: TdxBarDockingStyle; AWidth: Integer): TPoint; override;
    function IgnoreClickAreaWhenHidePopup: TRect; override;
    function IsPopup: Boolean; override;
    function NeedHideOnNCMouseClick: Boolean; override;
  public
    constructor CreateForPopup(AParentBarControl: TdxBarControl;
      AOwnerBar: TdxBar); override;
    destructor Destroy; override;
    procedure Hide; override;
    procedure Popup(const AOwnerRect: TRect); override;
  end;

  { TdxRibbonTabGroup }

  TdxRibbonTabGroupClass = class of TdxRibbonTabGroup;

  TdxRibbonTabGroup = class(TCollectionItem,
    IUnknown,
    IdxBarSelectableItem
  )
  private
    FCanCollapse: Boolean;
    FDesignSelectionHelper: IdxBarSelectableItem;
    FLoadedToolbarName: string;
    FToolbar: TdxBar;
    procedure CheckUndockToolbar;
    function GetTab: TdxRibbonTab;
    function GetToolbar: TdxBar;
    procedure ReadToolbarName(AReader: TReader);
    procedure SetCanCollapse(Value: Boolean);
    procedure SetToolbar(Value: TdxBar);
    procedure ValidateToolbar(Value: TdxBar);
    procedure WriteToolbarName(AWriter: TWriter);
  protected
    procedure DefineProperties(Filer: TFiler); override;
    procedure DockToolbar(AToolbar: TdxBar); virtual;
    function IsToolbarAcceptable(AToolbar: TdxBar): Boolean;
    procedure UpdateBarManager(ABarManager: TdxBarManager);
    procedure UpdateToolbarValue;

    property DesignSelectionHelper: IdxBarSelectableItem
      read FDesignSelectionHelper implements IdxBarSelectableItem;
    property Unknown: IdxBarSelectableItem
      read FDesignSelectionHelper implements IUnknown;
  public
    constructor Create(Collection: TCollection); override;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;

    property Tab: TdxRibbonTab read GetTab;
  published
    property CanCollapse: Boolean read FCanCollapse write SetCanCollapse default True;
    property ToolBar: TdxBar read GetToolbar write SetToolbar stored False;
  end;

  TdxRibbonTabGroups = class(TCollection)
  private
    FTab: TdxRibbonTab;
    function GetItem(Index: Integer): TdxRibbonTabGroup;
    procedure SetItem(Index: Integer; const Value: TdxRibbonTabGroup);
  protected
    function GetOwner: TPersistent; override;
  {$IFDEF DELPHI6}
    procedure Notify(Item: TCollectionItem; Action: TCollectionNotification); override;
  {$ENDIF}
    procedure Update(Item: TCollectionItem); override;
    procedure UpdateGroupToolbarValues;
  public
    constructor Create(ATab: TdxRibbonTab);
    function Add: TdxRibbonTabGroup;
    property Tab: TdxRibbonTab read FTab;
    property Items[Index: Integer]: TdxRibbonTabGroup read GetItem write SetItem; default;
  end;

  { TdxRibbonQuickAccessToolbar }

  TdxQuickAccessToolbarPosition = (qtpAboveRibbon, qtpBelowRibbon);

  TdxRibbonQuickAccessToolbar = class(TPersistent)
  private
    FDockControl: TdxRibbonQuickAccessDockControl;
    FRibbon: TdxCustomRibbon;
    FVisible: Boolean;
    FToolbar: TdxBar;
    FPosition: TdxQuickAccessToolbarPosition;
    procedure CheckUndockGroupToolbar(const Value: TdxBar);
    procedure SetPosition(const Value: TdxQuickAccessToolbarPosition);
    procedure SetToolbar(const Value: TdxBar);
    procedure SetVisible(const Value: Boolean);
  protected
    function Contains(AItemLink: TdxBarItemLink): Boolean;

    function CreateDockControl: TdxRibbonQuickAccessDockControl; virtual;
    function GetMenuItemsForMark: TdxRibbonPopupMenuItems; virtual;
    procedure UpdateColorScheme; virtual;
    procedure UpdateGroupButton(AForToolbar: TdxBar; ABeforeUndock: Boolean);
    procedure UpdateMenuItems(AItems: TdxBarItemLinks);
    procedure UpdateRibbon;

    property DockControl: TdxRibbonQuickAccessDockControl read FDockControl;
  public
    constructor Create(ARibbon: TdxCustomRibbon); virtual;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
    function HasGroupButtonForToolbar(AToolbar: TdxBar): Boolean;

    property Ribbon: TdxCustomRibbon read FRibbon;
  published
    property Position: TdxQuickAccessToolbarPosition read FPosition write SetPosition default qtpAboveRibbon;
    property Toolbar: TdxBar read FToolbar write SetToolbar;
    property Visible: Boolean read FVisible write SetVisible default True;
  end;

  { TdxRibbonApplicationButton }

  TdxRibbonApplicationButton = class(TPersistent)
  private
    FGlyph: TBitmap;
    FIAccessibilityHelper: IdxBarAccessibilityHelper;
    FKeyTip: string;
    FMenu: TdxBarApplicationMenu;
    FRibbon: TdxCustomRibbon;
    FScreenTip: TdxBarScreenTip;
    FStretchGlyph: Boolean;
    FVisible: Boolean;
    function GetIAccessibilityHelper: IdxBarAccessibilityHelper;
    procedure GlyphChanged(Sender: TObject);
    procedure SetGlyph(const Value: TBitmap);
    procedure SetMenu(const Value: TdxBarApplicationMenu);
    procedure SetVisible(const Value: Boolean);
    procedure SetScreenTip(const Value: TdxBarScreenTip);
    procedure SetStretchGlyph(const Value: Boolean);
  protected
    function GetAccessibilityHelperClass: TdxBarAccessibilityHelperClass; virtual;
    procedure Update;

    property IAccessibilityHelper: IdxBarAccessibilityHelper read GetIAccessibilityHelper;
  public
    constructor Create(ARibbon: TdxCustomRibbon); virtual;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
    property Ribbon: TdxCustomRibbon read FRibbon;
  published
    property Glyph: TBitmap read FGlyph write SetGlyph;
    property KeyTip: string read FKeyTip write FKeyTip;
    property Menu: TdxBarApplicationMenu read FMenu write SetMenu;
    property ScreenTip: TdxBarScreenTip read FScreenTip write SetScreenTip;
    property StretchGlyph: Boolean read FStretchGlyph write SetStretchGlyph default True;
    property Visible: Boolean read FVisible write SetVisible default True;
  end;

  { TdxRibbonTab }

  TdxRibbonTabClass = class of TdxRibbonTab;

  TdxRibbonTab = class(

⌨️ 快捷键说明

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