cxgridheaderpopupmenuitems.pas

来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 651 行 · 第 1/2 页

PAS
651
字号
{********************************************************************}
{                                                                    }
{       Developer Express Visual Component Library                   }
{       ExpressQuantumGrid Utils                                     }
{                                                                    }
{       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 EXPRESSQUANTUMGRID 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 cxGridHeaderPopupMenuItems;

{$I cxVer.inc}

interface

uses
  Classes, cxGridMenuOperations;

type
  TcxGridHeaderPopupMenuOperation = class(TcxGridTableColumnMenuOperation);

  TcxGridSortingMenuOperation = class(TcxGridHeaderPopupMenuOperation)
  protected
    procedure Execute(Sender: TObject); override;
    function GetVisible: Boolean; override;
    function IsSorted: Boolean;
  end;

  TcxGridSortColumn = class(TcxGridSortingMenuOperation)
  protected
    procedure Execute(Sender: TObject); override;
    function GetDown: Boolean; override;
    function GetEnabled: Boolean; override;
  end;

  TcxGridSortColumnAsc = class(TcxGridSortColumn)
  protected
    function GetImageResourceName: string; override;
  public
    constructor Create; override;
  end;

  TcxGridSortColumnDesc = class(TcxGridSortColumn)
  protected
    function GetImageResourceName: string; override;
  public
    constructor Create; override;
  end;

  TcxGridClearSorting = class(TcxGridSortingMenuOperation)
  protected
    function GetEnabled: Boolean; override;
  public
    constructor Create; override;
  end;

  TcxGridGroupByThisField = class(TcxGridHeaderPopupMenuOperation)
  protected
    procedure Execute(Sender: TObject); override;
    function GetCaption: string; override;
    function GetEnabled: Boolean; override;
    function GetImageResourceName: string; override;
    function GetVisible: Boolean; override;
  public
    constructor Create; override;
  end;

  TcxGridGroupByBox = class(TcxGridHeaderPopupMenuOperation)
  protected
    procedure Execute(Sender: TObject); override;
    function GetDown: Boolean; override;
    function GetImageResourceName: string; override;
    function GetVisible: Boolean; override;
  public
    constructor Create; override;
  end;

  TcxGridAlignmentSubMenu = class(TcxGridHeaderPopupMenuOperation)
  protected
    function GetVisible: Boolean; override;
  public
    constructor Create; override;
  end;

  TcxGridAlign = class(TcxGridHeaderPopupMenuOperation)
  protected
    procedure Execute(Sender: TObject); override;
    function GetDown: Boolean; Override;
    function GetEnabled: Boolean; override;
  public
    class function GetParentOperationClass: TcxGridPopupMenuOperationClass; override;
  end;

  TcxGridAlignLeft = class(TcxGridAlign)
  protected
    function GetImageResourceName: string; override;
  public
    constructor Create; override;
  end;

  TcxGridAlignRight = class(TcxGridAlign)
  protected
    function GetImageResourceName: string; override;
  public
    constructor Create; override;
  end;

  TcxGridAlignCenter = class(TcxGridAlign)
  protected
    function GetImageResourceName: string; override;
  public
    constructor Create; override;
  end;

  TcxGridBestFit = class(TcxGridHeaderPopupMenuOperation)
  protected
    procedure Execute(Sender: TObject); override;
    function GetEnabled: Boolean; override;
    function GetImageResourceName: string; override;
    function GetVisible: Boolean; override;
  public
    constructor Create; override;
  end;

  TcxGridBestFitAllColumns = class(TcxGridHeaderPopupMenuOperation)
  protected
    procedure Execute(Sender: TObject); override;
    function GetVisible: Boolean; override;
  public
    constructor Create; override;
  end;

  TcxGridRemoveColumn = class(TcxGridHeaderPopupMenuOperation)
  protected
    procedure Execute(Sender: TObject); override;
    function GetVisible: Boolean; override;
  public
    constructor Create; override;
  end;

  TcxGridFieldChooser = class(TcxGridHeaderPopupMenuOperation)
  protected
    procedure Execute(Sender: TObject); override;
    function GetDown: Boolean; override;
    function GetImageResourceName: string; override;
  public
    constructor Create; override;
  end;

  TcxGridShowFooter = class(TcxGridHeaderPopupMenuOperation)
  protected
    procedure Execute(Sender: TObject); override;
    function GetDown: Boolean; Override;
    function GetImageResourceName: string; override;
  public
    constructor Create; override;
  end;

  TcxGridShowGroupFooter = class(TcxGridHeaderPopupMenuOperation)
  protected
    procedure Execute(Sender: TObject); override;
    function GetDown: Boolean; override;
    function GetEnabled: Boolean; override;
    function GetImageResourceName: string; override;
    function GetVisible: Boolean; override;
  public
    constructor Create; override;
  end;

  TcxGridHeaderPopupMenuOperations = class(TcxGridPopupMenuOperations)
  protected
    procedure AddItems; override;
  end;

implementation

uses
  cxCustomData, cxEdit, cxGridCustomTableView, cxGridTableView, cxGridPopupMenuConsts;

const
  AImageName = 'HdrImg';

{ TcxGridSortingMenuOperation }

procedure TcxGridSortingMenuOperation.Execute(Sender: TObject);
begin
  if IsSorted then
    HitGridView.DataController.ClearSorting(True);
end;

function TcxGridSortingMenuOperation.GetVisible: Boolean;
begin
  Result := HitGridView.OptionsCustomize.ColumnSorting;
end;

function TcxGridSortingMenuOperation.IsSorted: Boolean;
var
  I: Integer;
begin
  Result := False;
  with HitGridView do
    if SortedItemCount > 0 then
      for I := 0 to SortedItemCount - 1 do
        if TcxCustomGridTableItemAccess.GetGroupIndex(SortedItems[I]) = -1 then
        begin
          Result := True;
          Break;
        end;
end;

{ TcxGridSortColumn }

procedure TcxGridSortColumn.Execute(Sender: TObject);
var
  ASortOrder: TcxDataSortOrder;
begin
  HitGridView.BeginUpdate;
  try
    inherited;
    case Tag of
      0: ASortOrder := soAscending;
      1: ASortOrder := soDescending;
    else
      ASortOrder := soNone;
    end;
    HitColumn.SortOrder := ASortOrder;
  finally
    HitGridView.EndUpdate;
  end;
end;

function TcxGridSortColumn.GetDown: Boolean;
begin
  if Tag = 0 then
    Result := HitColumn.SortOrder = soAscending
  else
    Result := HitColumn.SortOrder = soDescending;
end;

function TcxGridSortColumn.GetEnabled: Boolean;
begin
  Result := TcxCustomGridTableItemAccess.CanSort(HitColumn);
end;

{ TcxGridSortColumnAsc }

constructor TcxGridSortColumnAsc.Create;
begin
  inherited;
  ResCaption := @cxSGridSortColumnAsc;
  Tag := 0;
end;

function TcxGridSortColumnAsc.GetImageResourceName: string;
begin
  Result := AImageName + '1';
end;

{ TcxGridSortColumnDesc }

constructor TcxGridSortColumnDesc.Create;
begin
  inherited;
  ResCaption := @cxSGridSortColumnDesc;
  Tag := 1;
end;

function TcxGridSortColumnDesc.GetImageResourceName: string;
begin
  Result := AImageName + '2';
end;

{ TcxGridClearSorting }

constructor TcxGridClearSorting.Create;
begin
  inherited;
  ResCaption := @cxSGridClearSorting;
end;

function TcxGridClearSorting.GetEnabled: Boolean;
begin
  Result := IsSorted;
end;

{ TcxGridGroupBy }

constructor TcxGridGroupByThisField.Create;
begin
  inherited;
  ResCaption := @cxSGridGroupByThisField;
end;

procedure TcxGridGroupByThisField.Execute(Sender: TObject);
var
  AGroupIndex: Integer;
begin
  HitGridView.BeginUpdate;
  try
    HitGridView.OptionsView.GroupByBox := True;
    if HitColumn.GroupIndex <> -1 then

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?