📄 dxbarcustform.pas
字号:
{*******************************************************************}
{ }
{ Developer Express Visual Component Library }
{ ExpressBars customizing form }
{ }
{ Copyright (c) 1998-2008 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE EXPRESSBARS AND ALL ACCOMPANYING VCL }
{ CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{*******************************************************************}
unit dxBarCustForm;
{$I cxVer.inc}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, ExtCtrls, Menus, Buttons, cxClasses, dxBar, ActnList,
ToolWin, ImgList, Contnrs;
type
TdxBarCustomizingFormPainter = class
protected
class procedure DrawCaption(ACanvas: TCanvas; var AItemRect: TRect;
AItem: TdxCustomBarEdit; ASelected: Boolean); virtual;
class procedure DrawEditEdge(ACanvas: TCanvas; var AItemRect: TRect;
AItem: TdxCustomBarEdit; ASelected: Boolean); virtual;
class procedure DrawEditContent(ACanvas: TCanvas; AItemRect: TRect;
AItem: TdxCustomBarEdit; ASelected, ADrawArrowButton: Boolean); virtual;
class procedure InternalDrawCaption(ACanvas: TCanvas; var ATextRect: TRect;
const AText: string; AItem: TdxCustomBarEdit; ASelected: Boolean); virtual;
class procedure InternalDrawEditContent(ACanvas: TCanvas; AItemRect: TRect;
AItem: TdxCustomBarEdit; ASelected: Boolean); virtual;
class procedure DrawSubItemArrow(ACanvas: TCanvas; X, Y: Integer; ASelected: Boolean); virtual;
public
class function BrushColors(Selected: Boolean; AItem: TdxBarItem): TColor; virtual;
class procedure DrawButtonOrSubItem(ACanvas: TCanvas; ARect: TRect;
AItem: TdxBarItem; ACaption: string; Selected: Boolean); virtual;
class procedure DrawComboBoxButton(ACanvas: TCanvas; AItem: TdxBarItem;
ARect: TRect; ASelected: Boolean); virtual;
class procedure DrawEdit(ACanvas: TCanvas; ARect: TRect;
AItem: TdxCustomBarEdit; Selected, ADrawArrowButton: Boolean); virtual;
class procedure DrawFocusedRect(ACanvas: TCanvas; ARect: TRect; AItem: TdxBarItem); virtual;
class function FontColors(Selected: Boolean): TColor; virtual;
class function GetButtonColor(AItem: TdxBarItem;
ASelected: Boolean): Integer; virtual;
class function GetComboBoxButtonWidth: Integer; virtual;
end;
TdxBarCustomizingFormPainterClass = class of TdxBarCustomizingFormPainter;
TdxBarCustomizingFormStandardPainter = class(TdxBarCustomizingFormPainter)
public
class procedure DrawFocusedRect(ACanvas: TCanvas; ARect: TRect; AItem: TdxBarItem); override;
end;
TdxBarCustomizingFormFlatPainter = class(TdxBarCustomizingFormPainter)
protected
class procedure DrawEditEdge(ACanvas: TCanvas; var AItemRect: TRect;
AItem: TdxCustomBarEdit; ASelected: Boolean); override;
class procedure InternalDrawCaption(ACanvas: TCanvas; var ATextRect: TRect;
const AText: string; AItem: TdxCustomBarEdit; ASelected: Boolean); override;
public
class function BrushColors(Selected: Boolean; AItem: TdxBarItem): TColor; override;
class procedure DrawButtonOrSubItem(ACanvas: TCanvas; ARect: TRect;
AItem: TdxBarItem; ACaption: string; Selected: Boolean); override;
class procedure DrawComboBoxButton(ACanvas: TCanvas; AItem: TdxBarItem;
ARect: TRect; ASelected: Boolean); override;
class procedure DrawFocusedRect(ACanvas: TCanvas; ARect: TRect; AItem: TdxBarItem); override;
class function FontColors(Selected: Boolean): TColor; override;
end;
TdxBarCustomizingFormOffice11Painter = class(TdxBarCustomizingFormFlatPainter)
protected
class procedure DrawEditEdge(ACanvas: TCanvas; var AItemRect: TRect;
AItem: TdxCustomBarEdit; ASelected: Boolean); override;
class procedure InternalDrawCaption(ACanvas: TCanvas; var ATextRect: TRect;
const AText: string; AItem: TdxCustomBarEdit; ASelected: Boolean); override;
public
class function BrushColors(Selected: Boolean; AItem: TdxBarItem): TColor; override;
class procedure DrawButtonOrSubItem(ACanvas: TCanvas; ARect: TRect;
AItem: TdxBarItem; ACaption: string; Selected: Boolean); override;
class procedure DrawComboBoxButton(ACanvas: TCanvas; AItem: TdxBarItem;
ARect: TRect; ASelected: Boolean); override;
class function FontColors(Selected: Boolean): TColor; override;
class function GetButtonColor(AItem: TdxBarItem;
ASelected: Boolean): Integer; override;
end;
TdxBarCustomizingFormXPPainter = class(TdxBarCustomizingFormPainter)
class procedure DrawEditEdge(ACanvas: TCanvas; var AItemRect: TRect;
AItem: TdxCustomBarEdit; ASelected: Boolean); override;
class procedure InternalDrawEditContent(ACanvas: TCanvas; AItemRect: TRect;
AItem: TdxCustomBarEdit; ASelected: Boolean); override;
public
class procedure DrawButtonOrSubItem(ACanvas: TCanvas; ARect: TRect;
AItem: TdxBarItem; ACaption: string; Selected: Boolean); override;
class procedure DrawComboBoxButton(ACanvas: TCanvas; AItem: TdxBarItem;
ARect: TRect; ASelected: Boolean); override;
class procedure DrawFocusedRect(ACanvas: TCanvas; ARect: TRect; AItem: TdxBarItem); override;
class function GetComboBoxButtonWidth: Integer; override;
end;
TdxBarRunTimeSelectionController = class(TInterfacedObject, IdxBarDesigner)
private
FSelectionList: TdxComponentList;
FOnSelectionChanged: TNotifyEvent;
procedure AddSelection(AComponent: TComponent);
procedure SelectionListNotify(Sender: TObject; AComponent: TComponent; AAction: TListNotification);
procedure SelectionListChanged(Sender: TObject; AComponent: TComponent; AAction: TcxComponentCollectionNotification);
public
constructor Create;
destructor Destroy; override;
// IdxBarDesigner
function CanDeleteComponent(AComponent: TComponent): Boolean;
procedure GetSelection(AList: TList);
function GetSelectionStatus(AComponent: TPersistent): TdxBarSelectionStatus;
function IsComponentSelected(AComponent: TPersistent): Boolean;
procedure SelectComponent(AComponent: TPersistent; ASelectionOperation: TdxBarSelectionOperation = soExclusive);
procedure SetSelection(AList: TList);
procedure ShowDefaultEventHandler(AItem: TdxBarItem);
function UniqueName(const BaseName: string): string;
property OnSelectionChanged: TNotifyEvent read FOnSelectionChanged write FOnSelectionChanged;
end;
TdxBarPermissiveProc = function (Sender: TComponent): Boolean of object;
TdxBarCustomizingForm = class(TForm)
Panel1: TPanel;
PageControl: TPageControl;
tsToolbars: TTabSheet;
tsItems: TTabSheet;
BBarDelete: TButton;
BBarNew: TButton;
BBarRename: TButton;
BClose: TButton;
LabelToobars: TLabel;
tsOptions: TTabSheet;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel6: TPanel;
Panel7: TPanel;
lbCategories: TListBox;
lbItems: TListBox;
LabelCategories: TLabel;
LabelCommands: TLabel;
tsCommands: TTabSheet;
LAllCommands: TListBox;
CBShowCommandsWithShortCut: TCheckBox;
Panel5: TPanel;
Panel8: TPanel;
Panel9: TPanel;
DescriptionLabel: TLabel;
LabelDescription: TLabel;
Bevel1: TBevel;
BarManager1: TdxBarManager;
CategoriesPopupMenu: TdxBarPopupMenu;
CategoriesAdd: TdxBarButton;
CategoriesInsert: TdxBarButton;
CategoriesRename: TdxBarButton;
CategoriesDelete: TdxBarButton;
CommandsAdd: TdxBarButton;
CommandsDelete: TdxBarButton;
CommandsClear: TdxBarButton;
CommandsPopupMenu: TdxBarPopupMenu;
CommandsSubMenuEditor: TdxBarButton;
CommandsMoveUp: TdxBarButton;
CommandsMoveDown: TdxBarButton;
CategoriesVisible: TdxBarButton;
CategoriesItemsVisible: TdxBarCombo;
lbBarsList: TListBox;
CategoriesPopupButtonPlace: TSpeedButton;
CommandsPopupButtonPlace: TSpeedButton;
BBarReset: TButton;
StandardOptionsPanel: TPanel;
LabelMenuAnimations: TLabel;
ComboBoxMenuAnimations: TComboBox;
CBHint1: TCheckBox;
CBHint2: TCheckBox;
CBLargeIcons: TCheckBox;
EnhancedOptionsPanel: TPanel;
Label1: TLabel;
ComboBoxMenuAnimationsEx: TComboBox;
CBHint1Ex: TCheckBox;
CBHint2Ex: TCheckBox;
CBLargeIconsEx: TCheckBox;
Bevel2: TBevel;
Label2: TLabel;
Label3: TLabel;
Bevel3: TBevel;
CBMenusShowRecentItemsFirst: TCheckBox;
CBShowFullMenusAfterDelay: TCheckBox;
BResetUsageData: TButton;
BHelp: TBitBtn;
tsGroups: TTabSheet;
gbGroups: TGroupBox;
gpGroupItems: TGroupBox;
lbGroups: TListBox;
lbGroupItems: TListBox;
alCustomize: TActionList;
aNewToolBar: TAction;
aRenameToolBar: TAction;
aDeleteToolBar: TAction;
aResetToolBar: TAction;
aAddGroupItem: TAction;
aDeleteGroupItem: TAction;
tbGroups: TToolBar;
btnAddGroup: TToolButton;
btnDeleteGroup: TToolButton;
ToolButton3: TToolButton;
btnMoveUpGroup: TToolButton;
btnMoveDownGroup: TToolButton;
aAddGroup: TAction;
aDeleteGroup: TAction;
imgGroups: TImageList;
aMoveUpGroup: TAction;
aMoveDownGroup: TAction;
aMoveUpGroupItem: TAction;
aMoveDownGroupItem: TAction;
tbGroupItems: TToolBar;
btnAddGroupItem: TToolButton;
btnDeleteGroupItem: TToolButton;
ToolButton8: TToolButton;
btnMoveUpGroupItem: TToolButton;
btnMoveDownGroupItem: TToolButton;
Bevel4: TBevel;
aDeleteItem: TAction;
aAddItem: TAction;
aMoveUpItem: TAction;
aMoveDownItem: TAction;
aSubMenuEditor: TAction;
aClearItemList: TAction;
TabSheet1: TTabSheet;
tvKeyTips: TTreeView;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure lbBarsListClick(Sender: TObject);
procedure lbBarsListMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure lbBarsListDblClick(Sender: TObject);
procedure lbBarsListKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure lbBarsListDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
procedure BHelpClick(Sender: TObject);
procedure BCloseClick(Sender: TObject);
procedure lbCategoriesClick(Sender: TObject);
procedure lbCategoriesKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure lbCategoriesMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure lbCategoriesDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure lbCategoriesEndDrag(Sender, Target: TObject; X, Y: Integer);
procedure CategoriesPopupMenuPopup(Sender: TObject);
procedure CategoriesAddClick(Sender: TObject);
procedure CategoriesInsertClick(Sender: TObject);
procedure CategoriesRenameClick(Sender: TObject);
procedure CategoriesItemsVisibleChange(Sender: TObject);
procedure CategoriesVisibleClick(Sender: TObject);
procedure CategoriesDeleteClick(Sender: TObject);
procedure lbItemsClick(Sender: TObject);
procedure lbItemsDblClick(Sender: TObject);
procedure lbItemsKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure lbItemsMeasureItem(Control: TWinControl;
Index: Integer; var Height: Integer);
procedure lbItemsMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure lbItemsDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure lbItemsMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure CommandsPopupMenuPopup(Sender: TObject);
procedure CommandsAddClick(Sender: TObject);
procedure CommandsDeleteClick(Sender: TObject);
procedure CommandsClearClick(Sender: TObject);
procedure CommandsMoveUpClick(Sender: TObject);
procedure CommandsMoveDownClick(Sender: TObject);
procedure CommandsSubMenuEditorClick(Sender: TObject);
procedure CBMenusShowRecentItemsFirstClick(Sender: TObject);
procedure CBShowFullMenusAfterDelayClick(Sender: TObject);
procedure BResetUsageDataClick(Sender: TObject);
procedure CBLargeIconsClick(Sender: TObject);
procedure CBHint1Click(Sender: TObject);
procedure CBHint1ExClick(Sender: TObject);
procedure CBHint2Click(Sender: TObject);
procedure ComboBoxMenuAnimationsClick(Sender: TObject);
procedure LAllCommandsClick(Sender: TObject);
procedure LAllCommandsDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure CBShowCommandsWithShortCutClick(Sender: TObject);
procedure lbGroupsClick(Sender: TObject);
procedure lbGroupsDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure lbGroupsKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure lbGroupsMeasureItem(Control: TWinControl; Index: Integer;
var Height: Integer);
procedure lbGroupItemsClick(Sender: TObject);
procedure lbGroupItemsDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure lbGroupItemsKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure aNewToolBarExecute(Sender: TObject);
procedure aRenameToolBarExecute(Sender: TObject);
procedure aDeleteToolBarExecute(Sender: TObject);
procedure aResetToolBarExecute(Sender: TObject);
procedure aAddGroupItemExecute(Sender: TObject);
procedure aDeleteGroupItemExecute(Sender: TObject);
procedure aAddGroupExecute(Sender: TObject);
procedure aDeleteGroupExecute(Sender: TObject);
procedure aMoveGroupExecute(Sender: TObject);
procedure aMoveGroupItemExecute(Sender: TObject);
procedure aMoveItemExecute(Sender: TObject);
procedure aAddItemExecute(Sender: TObject);
procedure aDeleteItemExecute(Sender: TObject);
procedure aSubMenuEditorExecute(Sender: TObject);
procedure aClearItemListExecute(Sender: TObject);
private
FDisabledWindows: TList;
FSelectionList: TdxComponentList;
FBarListBoxOldWndProc: TWndMethod;
FBarsOldChangeEvent: TcxComponentCollectionChangeEvent;
FCategoryListBoxOldWndProc: TWndMethod;
FItemListBoxOldWndProc: TWndMethod;
FItemsOldChangeEvent: TdxBarListChangeEvent;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -