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

📄 dxribbongallery.pas

📁 胜天进销存源码,国产优秀的进销存
💻 PAS
📖 第 1 页 / 共 5 页
字号:
  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 + -