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

📄 dxbarcustform.pas

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