📄 dxribbon.pas
字号:
function GetViewInfoClass: TdxRibbonGroupsDockControlViewInfoClass; virtual;
function IsMultiRow: Boolean; override;
procedure MakeRectFullyVisible(const R: TRect); virtual;
procedure Paint; override;
procedure SetSize; override;
procedure ShowCustomizePopup; override;
procedure UpdateGroupPositions;
procedure VisibleChanged; override;
property Ribbon: TdxCustomRibbon read GetRibbon;
property ViewInfo: TdxRibbonGroupsDockControlViewInfo read FViewInfo;
public
constructor Create(ATab: TdxRibbonTab); reintroduce; virtual;
destructor Destroy; override;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
property Tab: TdxRibbonTab read FTab;
end;
{ TdxRibbonGroupsDockControlViewInfo }
TdxRibbonGroupsDockControlViewInfo = class
private
FPrevGroupCollapsedStates: array of Boolean;
FScrollButtons: TdxRibbonScrollButtons;
FScrollPosition: Integer;
procedure CheckGroupCollapsedStates;
function GetFirstGroupPosition: Integer;
function GetGroupCount: Integer;
function GetGroupViewInfo(AIndex: Integer): TdxRibbonGroupBarControlViewInfo;
function IsValidToolbar(AToolbar: TdxBar): Boolean;
procedure SaveGroupCollapsedStates;
function TotalGroupsWidth: Integer;
function TryPlaceGroups(AMaxContentWidth: Integer): Boolean;
protected
FDockControl: TdxRibbonGroupsDockControl;
procedure CalculateGroupsScrollInfo(AMaxContentWidth: Integer); virtual;
procedure InternalScrollGroups(ADelta: Integer; AMaxContentWidth: Integer); virtual;
public
constructor Create(ADockControl: TdxRibbonGroupsDockControl); virtual;
procedure Calculate(const ABoundsRect: TRect); virtual;
procedure ResetScrollInfo;
procedure ScrollGroups(AScrollLeft: Boolean; AMaxContentWidth: Integer); virtual;
property DockControl: TdxRibbonGroupsDockControl read FDockControl;
property FirstGroupPosition: Integer read GetFirstGroupPosition;
property GroupCount: Integer read GetGroupCount;
property GroupViewInfos[AIndex: Integer]: TdxRibbonGroupBarControlViewInfo read GetGroupViewInfo;
property ScrollButtons: TdxRibbonScrollButtons read FScrollButtons;
end;
{ TdxRibbonTabGroupsPopupWindow }
TdxRibbonTabGroupsPopupWindow = class(TcxCustomPopupWindow)
private
FRibbon: TdxCustomRibbon;
FShadow: TdxBarShadow;
function GetBounds: TRect;
function GetGroupsDockControlSite: TdxRibbonGroupsDockControlSite;
procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT;
procedure WMSize(var Message: TWMSize); message WM_SIZE;
protected
function CalculatePosition: TPoint; override;
procedure CalculateSize; override;
procedure CreateParams(var Params: TCreateParams); override;
procedure Deactivate; override;
procedure DoClosed; override;
procedure DoShowed; override;
procedure DoShowing; override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
function NeedIgnoreMouseMessageAfterCloseUp(AWnd: THandle; AMsg: Cardinal;
AShift: TShiftState; const APos: TPoint): Boolean; override;
procedure HandleNavigationKey(AKey: Word);
procedure SetGroupsDockControlSite;
public
constructor Create(ARibbon: TdxCustomRibbon); reintroduce; virtual;
destructor Destroy; override;
property GroupsDockControlSite: TdxRibbonGroupsDockControlSite
read GetGroupsDockControlSite;
property Ribbon: TdxCustomRibbon read FRibbon;
end;
{ TdxRibbonCustomBarControl }
TdxRibbonPopupMenuItem = (rpmiItems, rpmiMoreCommands, rpmiQATPosition,
rpmiQATAddRemoveItem, rpmiMinimizeRibbon);
TdxRibbonPopupMenuItems = set of TdxRibbonPopupMenuItem;
TdxRibbonCustomBarControl = class(TdxBarControl)
private
function GetQuickAccessToolbar: TdxRibbonQuickAccessToolbar;
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
protected
function AllowQuickCustomizing: Boolean; override;
function CanAlignControl(AControl: TdxBarItemControl): Boolean; override;
function CanMoving: Boolean; override;
function GetBehaviorOptions: TdxBarBehaviorOptions; override;
function GetEditFont: TFont; override;
function GetFont: TFont; override;
function GetFullItemRect(Item: TdxBarItemControl): TRect; override;
function GetIsMainMenu: Boolean; override;
function GetMultiLine: Boolean; override;
function GetRibbon: TdxCustomRibbon; virtual; abstract;
function HasCloseButton: Boolean; override;
function MarkExists: Boolean; override;
function NotHandleMouseMove(ACheckLastMousePos: Boolean = True): Boolean; override;
function RealMDIButtonsOnBar: Boolean; override;
//
function ClickAtHeader: Boolean; virtual;
procedure DoPopupMenuClick(Sender: TObject); virtual;
function GetPopupMenuItems: TdxRibbonPopupMenuItems; virtual;
procedure InitCustomizationPopup(AItemLinks: TdxBarItemLinks); override;
procedure PopupMenuClick(Sender: TObject);
procedure ShowPopup(AItem: TdxBarItemControl); override;
//
property QuickAccessToolbar: TdxRibbonQuickAccessToolbar read GetQuickAccessToolbar;
public
constructor CreateEx(AOwner: TComponent; ABar: TdxBar); override;
property Ribbon: TdxCustomRibbon read GetRibbon;
end;
{ TdxRibbonQuickAccessBarControl }
TdxRibbonQuickAccessBarControl = class(TdxRibbonCustomBarControl)
private
FBitmap: TcxBitmap;
FDefaultGlyph: TBitmap;
FIsWindowCreation: Boolean;
FInternalItems: TComponentList;
function GetSeparatorWidth(AItemControl: TdxBarItemControl): Integer;
function GetViewInfo: TdxRibbonQuickAccessBarControlViewInfo;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
{$IFNDEF DELPHI7}
procedure WMPrintClient(var Message: TWMPrintClient); message WM_PRINTCLIENT;
{$ENDIF}
protected
function AllItemsVisible: Boolean;
procedure CalcControlsPositions; override;
function CanHideAllItemsInSingleLine: Boolean; override;
procedure CreateWnd; override;
procedure DoPaintItem(AControl: TdxBarItemControl; ACanvas: TcxCanvas; const AItemRect: TRect); override;
function GetAccessibilityHelperClass: TdxBarAccessibilityHelperClass; override;
function GetClientOffset: TRect; virtual;
function GetDefaultItemGlyph: TBitmap; override;
function GetItemControlDefaultViewLevel(
AItemControl: TdxBarItemControl): TdxBarItemViewLevel; override;
function GetMarkAccessibilityHelperClass: TdxBarAccessibilityHelperClass; override;
function GetMarkSize: Integer; override;
function GetMinHeight(AStyle: TdxBarDockingStyle): Integer; override;
function GetMinWidth(AStyle: TdxBarDockingStyle): Integer; override;
function GetPopupMenuItems: TdxRibbonPopupMenuItems; override;
function GetQuickControlClass: TdxBarControlClass; override;
function GetRibbon: TdxCustomRibbon; override;
function GetSize(AMaxWidth: Integer): TSize;
function GetSizeForWidth(AStyle: TdxBarDockingStyle; AWidth: Integer): TPoint; override;
function GetViewInfoClass: TCustomdxBarControlViewInfoClass; override;
function AllowQuickCustomizing: Boolean; override;
procedure InitQuickCustomizeItemLinks(AQuickControlItemLinks: TdxBarItemLinks); override;
procedure InitAddRemoveSubItemPopup(AItemLinks: TdxBarItemLinks); override;
procedure InitCustomizationPopup(AItemLinks: TdxBarItemLinks); override;
function MarkExists: Boolean; override;
procedure RemoveItemFromQAT;
procedure ShowPopup(AItem: TdxBarItemControl); override;
procedure UpdateDefaultGlyph(AGlyph: TBitmap); virtual;
procedure UpdateDoubleBuffered; override;
property ViewInfo: TdxRibbonQuickAccessBarControlViewInfo read GetViewInfo;
public
constructor CreateEx(AOwner: TComponent; ABar: TdxBar); override;
destructor Destroy; override;
function IsOnGlass: Boolean; override;
end;
{ TdxRibbonQuickAccessBarControlViewInfo }
TdxRibbonQuickAccessBarControlViewInfo = class(TdxBarControlViewInfo)
protected
function CanShowSeparators: Boolean; override;
function IsLastVisibleItemControl(AItemControl: TdxBarItemControl): Boolean; override;
end;
{ TdxRibbonQuickAccessItemControlPainter }
TdxRibbonQuickAccessPainter = class(TdxRibbonBarPainter)
protected
procedure BarDrawMarkBackground(ABarControl: TdxBarControl; DC: HDC;
ItemRect: TRect; AToolbarBrush: HBRUSH); override;
procedure DrawGroupButtonControl(ADrawParams: TdxBarButtonLikeControlDrawParams;
const ARect: TRect); virtual;
procedure DrawToolbarContentPart(ABarControl: TdxBarControl; ACanvas: TcxCanvas); override;
function MarkButtonWidth: Integer; virtual;
public
function BarMarkRect(ABarControl: TdxBarControl): TRect; override;
function BarMarkItemRect(ABarControl: TdxBarControl): TRect; override;
procedure ComboControlDrawArrowButton(
const ADrawParams: TdxBarEditLikeControlDrawParams; ARect: TRect; AInClientArea: Boolean); override;
function GetToolbarContentOffsets(ABar: TdxBar;
ADockingStyle: TdxBarDockingStyle; AHasSizeGrip: Boolean): TRect; override;
function MarkButtonOffset: Integer; virtual;
function MarkSizeX(ABarControl: TdxBarControl): Integer; override;
end;
{ TdxRibbonQuickAccessDockControl }
TdxRibbonQuickAccessDockControl = class(TdxCustomRibbonDockControl)
private
FPainter: TdxRibbonQuickAccessPainter;
FRibbon: TdxCustomRibbon;
protected
procedure CalcLayout; override;
function GetDockedBarControlClass: TdxBarControlClass; override;
function GetPainter: TdxBarPainter; override;
procedure VisibleChanged; override;
public
constructor Create(AOwner: TdxCustomRibbon); reintroduce; virtual;
destructor Destroy; override;
property Ribbon: TdxCustomRibbon read FRibbon;
end;
{ TdxRibbonQuickAccessBarControlDesignHelper }
TdxRibbonQuickAccessBarControlDesignHelper = class(TCustomdxBarControlDesignHelper)
public
class procedure GetEditors(AEditors: TList); override;
class function GetForbiddenActions: TdxBarCustomizationActions; override;
end;
{ TdxRibbonQuickAccessPopupBarControl }
TdxRibbonQuickAccessPopupBarControl = class(TdxRibbonQuickAccessBarControl)
private
FPainter: TdxBarPainter;
function GetQuickAccessBarControl: TdxRibbonQuickAccessBarControl;
function GetMarkLink: TdxBarItemLink;
function GetMarkSubItem: TCustomdxBarSubItem;
protected
function GetClientOffset: TRect; override;
function GetPainter: TdxBarPainter; override;
function GetRibbon: TdxCustomRibbon; override;
function GetSizeForPopup: TSize; override;
function HasShadow: Boolean; override;
function IsPopup: Boolean; override;
property QuickAccessBarControl: TdxRibbonQuickAccessBarControl
read GetQuickAccessBarControl;
public
constructor CreateEx(AOwner: TComponent; ABar: TdxBar); override;
destructor Destroy; override;
procedure CloseUp; override;
procedure Popup(const AOwnerRect: TRect); override;
end;
{ TdxRibbonQuickAccessPopupItemControlPainter }
TdxRibbonQuickAccessPopupPainter = class(TdxRibbonQuickAccessPainter)
protected
procedure DrawQuickAccessPopupSubItem(DC: HDC; const ARect: TRect;
AState: Integer); virtual;
procedure DrawToolbarContentPart(ABarControl: TdxBarControl; ACanvas: TcxCanvas); override;
public
function MarkButtonOffset: Integer; override;
function MarkSizeX(ABarControl: TdxBarControl): Integer; override;
end;
{ TdxRibbonQuickAccessPopupSubItem }
TdxRibbonQuickAccessPopupSubItem = class(TdxBarSubItem)
protected
function CreateBarControl: TCustomdxBarControl; override;
end;
TdxRibbonQuickAccessPopupSubMenuControl = class(TdxBarSubMenuControl)
protected
procedure ShowPopup(AItem: TdxBarItemControl); override;
end;
{ TdxRibbonQuickAccessPopupSubItemControl }
TdxRibbonQuickAccessPopupSubItemControl = class(TdxBarSubItemControl)
protected
procedure DoCloseUp(AHadSubMenuControl: Boolean); override;
procedure DoPaint(ARect: TRect; PaintType: TdxBarPaintType); override;
function GetDefaultWidth: Integer; override;
end;
{ TdxRibbonQuickAccessPopupSubItemButton }
TdxRibbonQuickAccessPopupSubItemButton = class(TdxBarButton)
public
procedure DoClick; override;
end;
{ TdxRibbonQuickAccessPopupSubItemButtonControl }
TdxRibbonQuickAccessPopupSubItemButtonControl = class(TdxBarButtonControl)
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -