📄 dxribbongallery.pas
字号:
public
constructor Create(AGalleryFilter: TdxRibbonGalleryFilter);
function Add: TdxRibbonGalleryFilterCategory;
property Items[Index: Integer]: TdxRibbonGalleryFilterCategory read GetItem
write SetItem; default;
end;
{ TdxRibbonGalleryFilter }
TdxRibbonGalleryFilter = class(TPersistent)
private
FActiveCategoryIndex: Integer;
FCaption: string;
FCategories: TdxRibbonGalleryFilterCategories;
FGalleryItem: TdxRibbonGalleryItem;
FLoadedActiveCategoryIndex: Integer;
FVisible: Boolean;
procedure SetActiveCategoryIndex(Value: Integer);
procedure SetCaption(const Value: string);
procedure SetCategories(Value: TdxRibbonGalleryFilterCategories);
protected
procedure CategoriesChanged;
function GetOwner: TPersistent; override;
procedure Loaded;
property GalleryItem: TdxRibbonGalleryItem read FGalleryItem;
public
constructor Create(AGalleryItem: TdxRibbonGalleryItem);
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
function IsGroupFiltered(AGroup: TdxRibbonGalleryGroup): Boolean;
published
property ActiveCategoryIndex: Integer read FActiveCategoryIndex
write SetActiveCategoryIndex default -1;
property Caption: string read FCaption write SetCaption;
property Categories: TdxRibbonGalleryFilterCategories read FCategories
write SetCategories;
property Visible: Boolean read FVisible write FVisible default False;
end;
{ TdxRibbonGalleryItem }
TdxRibbonGalleryFilterChangedEvent = procedure(
Sender: TdxRibbonGalleryItem) of object;
TdxRibbonGalleryGroupItemClickEvent = procedure(Sender: TdxRibbonGalleryItem;
AItem: TdxRibbonGalleryGroupItem) of object;
TdxRibbonGalleryHotTrackedItemChangedEvent = procedure(
APrevHotTrackedGroupItem, ANewHotTrackedGroupItem: TdxRibbonGalleryGroupItem) of object;
TdxRibbonGalleryInitFilterMenuEvent = procedure(Sender: TdxRibbonGalleryItem;
AItemLinks: TdxBarItemLinks) of object;
TdxRibbonGalleryItem = class(TCustomdxBarSubItem)
private
FDefaultTextColor: TColor;
FDefaultTextColorDetermined: Boolean;
FDropDownGallery: TdxRibbonDropDownGallery;
FFilterChangedLockCount: Integer;
FGalleryFilter: TdxRibbonGalleryFilter;
FGalleryGroups: TdxRibbonGalleryGroups;
FGalleryOptions: TdxRibbonGalleryOptions;
FIsClone: Boolean;
FLockGroupItemClickEventsCount: Integer;
FRecalculatingOnFilterChanged: Boolean;
FSelectedGroupItem: TdxRibbonGalleryGroupItem;
FSelectedTextColor: TColor;
FSelectedTextColorDetermined: Boolean;
FOnFilterChanged: TdxRibbonGalleryFilterChangedEvent;
FOnGroupItemClick: TdxRibbonGalleryGroupItemClickEvent;
FOnHotTrackedItemChanged: TdxRibbonGalleryHotTrackedItemChangedEvent;
FOnInitFilterMenu: TdxRibbonGalleryInitFilterMenuEvent;
procedure NotifyGroups(AComponent: TComponent; Operation: TOperation);
procedure SetDropDownGallery(Value: TdxRibbonDropDownGallery);
procedure SetGalleryFilter(Value: TdxRibbonGalleryFilter);
procedure SetGalleryGroups(Value: TdxRibbonGalleryGroups);
procedure SetGalleryOptions(Value: TdxRibbonGalleryOptions);
procedure SetSelectedGroupItem(Value: TdxRibbonGalleryGroupItem);
protected
FClickedGroupItem: TdxRibbonGalleryGroupItem;
function AreGroupItemClickEventsLocked: Boolean;
function CanBePlacedOn(AParentKind: TdxBarItemControlParentKind;
AToolbar: TdxBar; out AErrorText: string): Boolean; override;
function CreateCloneForDropDownGallery: TdxRibbonGalleryItem; virtual;
procedure DoCloseUp; override;
procedure DoFilterChanged;
procedure DoGroupItemClick(AItem: TdxRibbonGalleryGroupItem); virtual;
procedure DoHotTrackedItemChanged(APrevHotTrackedGroupItem,
ANewHotTrackedGroupItem: TdxRibbonGalleryGroupItem); virtual;
procedure DoInitFilterMenu(AItemLinks: TdxBarItemLinks);
procedure DoPopup; override;
procedure FilterCaptionChanged;
procedure FilterChanged;
procedure GalleryChanged;
function GetFilterCaption: string;
function GetImages: TCustomImageList;
class function GetNewCaption: string; override;
procedure GroupVisibleChanged;
procedure ImagesChange(Sender: TObject);
function InternalCanMergeWith(AItem: TdxBarItem): Boolean; override;
function IsFilterVisible: Boolean;
procedure Loaded; override;
procedure LockFilterChanged(ALock: Boolean);
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure RemoveGroupItem(AItem: TdxRibbonGalleryGroupItem);
procedure UpdateEx(AParentKinds: TdxBarKinds = dxBarKindAny); override;
property DefaultTextColor: TColor read FDefaultTextColor;
property IsClone: Boolean read FIsClone;
property RecalculatingOnFilterChanged: Boolean read FRecalculatingOnFilterChanged;
property SelectedTextColor: TColor read FSelectedTextColor;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure DoClick; override;
function GetAddMessageName: string; override;
function IsGroupVisible(AGroupIndex: Integer;
AIgnoreVisibleProperty: Boolean = False): Boolean;
procedure LockGroupItemClickEvents(ALock: Boolean);
property SelectedGroupItem: TdxRibbonGalleryGroupItem
read FSelectedGroupItem write SetSelectedGroupItem;
published
property DropDownGallery: TdxRibbonDropDownGallery read FDropDownGallery write SetDropDownGallery;
property ItemLinks;
property ItemOptions;
property GalleryGroups: TdxRibbonGalleryGroups read FGalleryGroups write SetGalleryGroups;
property GalleryFilter: TdxRibbonGalleryFilter read FGalleryFilter write SetGalleryFilter;
property GalleryOptions: TdxRibbonGalleryOptions read FGalleryOptions write SetGalleryOptions;
property OnCloseUp;
property OnFilterChanged: TdxRibbonGalleryFilterChangedEvent
read FOnFilterChanged write FOnFilterChanged;
property OnGroupItemClick: TdxRibbonGalleryGroupItemClickEvent read FOnGroupItemClick write FOnGroupItemClick;
property OnHotTrackedItemChanged: TdxRibbonGalleryHotTrackedItemChangedEvent read FOnHotTrackedItemChanged write FOnHotTrackedItemChanged;
property OnInitFilterMenu: TdxRibbonGalleryInitFilterMenuEvent
read FOnInitFilterMenu write FOnInitFilterMenu;
property OnPopup;
end;
{ TdxRibbonGalleryController }
TdxRibbonGalleryController = class
private
FGroupItemHotTrackEnabled: Boolean;
FHintItem: TdxRibbonGalleryGroupItem;
FKeyboardHotGroupItem: TdxRibbonGalleryGroupItem;
FLastCommandFromKeyboard: Boolean;
procedure UnsetDownedFromGroupItem(AGroupItem: TdxRibbonGalleryGroupItem);
function GetFirstGroupItem: TdxRibbonGalleryGroupItem;
function GetGalleryItem: TdxRibbonGalleryItem;
function GetGroupCount: Integer;
function GetKeyboardHotGroupItem: TdxRibbonGalleryGroupItem;
function GetViewInfo: TdxRibbonGalleryControlViewInfo;
procedure SetHotGroupItem(const Value: TdxRibbonGalleryGroupItem);
protected
FOwner: TdxRibbonGalleryControl;
procedure CancelHint;
function GetGroupItem(AGroupIndex, AIndex: Integer): TdxRibbonGalleryGroupItem;
procedure HotTrackItem(AItem: TdxRibbonGalleryGroupItem);
procedure SetHintItem(AItem: TdxRibbonGalleryGroupItem);
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
procedure MouseLeave; virtual;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); virtual;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual;
property GalleryItem: TdxRibbonGalleryItem read GetGalleryItem;
property GroupCount: Integer read GetGroupCount;
property GroupItemHotTrackEnabled: Boolean read FGroupItemHotTrackEnabled write FGroupItemHotTrackEnabled;
public
constructor Create(AOwner: TdxRibbonGalleryControl); virtual;
property KeyboardHotGroupItem: TdxRibbonGalleryGroupItem
read GetKeyboardHotGroupItem write FKeyboardHotGroupItem;
property ViewInfo: TdxRibbonGalleryControlViewInfo read GetViewInfo;
end;
{ TdxRibbonOnSubMenuGalleryController }
TdxRibbonOnSubMenuGalleryController = class(TdxRibbonGalleryController)
private
FFilterMenuControl: TdxRibbonGalleryFilterMenuControl;
FTempEventHandler: TNotifyEvent;
procedure CheckFilterMenuHotTrack;
procedure FilterMenuButtonClick(Sender: TObject);
procedure FilterMenuCategoryButtonClick(Sender: TObject);
procedure FilterMenuGroupButtonClick(Sender: TObject);
function GetFirstGroupItem: TdxRibbonGalleryGroupItem;
function GetGalleryWidth: Integer;
function GetLastGroupItem: TdxRibbonGalleryGroupItem;
function GetViewInfo: TdxRibbonOnSubMenuGalleryControlViewInfo;
procedure HideFilterMenu;
procedure InitFilterMenu(AItemLinks: TdxBarItemLinks);
function IsFilterMenuInternalButton(AItem: TdxBarItem): Boolean;
procedure ShowFilterMenu;
protected
procedure FilterMenuControlDestroyed;
procedure HotTrackFirstGroupItem;
procedure HotTrackLastGroupItem;
function IsFilterMenuShowed: Boolean;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseLeave; override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure Navigation(ADirection: TcxAccessibilityNavigationDirection);
procedure PageDown;
procedure PageUp;
procedure Tabulation;
public
property ViewInfo: TdxRibbonOnSubMenuGalleryControlViewInfo read GetViewInfo;
end;
{ TdxRibbonGalleryFilterMenuControl }
TdxRibbonGalleryFilterMenuControl = class(TdxBarInternalSubMenuControl)
private
FGalleryControl: TdxRibbonGalleryControl;
FGalleryControlLink: TcxObjectLink;
protected
function GetBehaviorOptions: TdxBarBehaviorOptions; override;
function GetPainter: TdxBarPainter; override;
procedure ProcessMouseDownMessageForMeaningParent(AWnd: HWND; AMsg: UINT;
const AMousePos: TPoint); override;
property GalleryControl: TdxRibbonGalleryControl read FGalleryControl;
public
constructor Create(AGalleryControl: TdxRibbonGalleryControl); reintroduce;
destructor Destroy; override;
end;
{ TdxRibbonGalleryControl }
TdxRibbonGalleryControl = class(TdxBarSubItemControl)
private
FCollapsed: Boolean;
FController: TdxRibbonGalleryController;
FDropDownGalleryItem: TdxRibbonGalleryItem;
FHintBounds: TRect;
FHintItem: TdxRibbonGalleryGroupItem;
FIsClickOnItemsArea: Boolean;
FIsClosingUpSubMenuControl: Boolean;
FIsCollapsedAssigned: Boolean;
FIsCreatingSubMenuControl: Boolean;
FIsDroppingDown: Boolean;
FIsNeedScrollBarLock: Boolean;
FScrollBar: TdxRibbonGalleryScrollBar;
FSizeChanged: Boolean;
FLockCalcParts: Boolean;
procedure DoScrollBarDropDown(Sender: TObject);
procedure DrawInvalid(const ABounds: TRect);
function GetCollapsed: Boolean;
function GetItem: TdxRibbonGalleryItem;
function GetViewInfo: TdxRibbonGalleryControlViewInfo;
procedure ObtainTextColors;
procedure SetCollapsed(Value: Boolean);
protected
//hints
function DoHint(var ANeedDeactivate: Boolean; out AHintText: string; out AShortCut: string): Boolean; override;
function GetHintPosition(const ACursorPos: TPoint; AHeight: Integer): TPoint; override;
procedure UpdateHint(AHintItem: TdxRibbonGalleryGroupItem; const ABounds: TRect);
function CalcDefaultWidth: Integer; virtual;
function CalcMinHeight: Integer; virtual;
procedure CalcParts; override;
function CanClicked: Boolean; override;
procedure ControlUnclick(ByMouse: Boolean); override;
function CreateController: TdxRibbonGalleryController; virtual;
procedure DoCloseUp(AHadSubMenuControl: Boolean); override;
procedure DoDropDown(AByMouse: Boolean); override;
procedure DropDown(AByMouse: Boolean); override;
procedure EnabledChanged; override;
function GetClientHeight: Integer;
function GetClientWidth: Integer;
function GetDefaultHeightInSubMenu: Integer; override;
function GetDefaultWidthInSubMenu: Integer; override;
//function GetMinWidth: Integer; override;
function GetMouseWheelStep: Integer;
procedure GetSubMenuControlPositionParams(out P: TPoint;
out AOwnerWidth, AOwnerHeight: Integer); override;
function InternalGetDefaultWidth: Integer; override;
function WantsKey(Key: Word): Boolean; override;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -