📄 dxribbon.pas
字号:
{ 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 + -