cxgriddbchartview.pas

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

PAS
596
字号
{********************************************************************}
{                                                                    }
{       Developer Express Visual Component Library                   }
{       ExpressQuantumGrid                                           }
{                                                                    }
{       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 cxGridDBChartView;

{$I cxVer.inc}

interface

uses
  Classes, DB, cxCustomData, cxDataStorage, cxDBData, cxEdit,
  cxGridCustomView, cxGridChartView;

type
  TcxGridDBChartView = class;

  TcxGridDBChartDataController = class(TcxDBDataController, IcxCustomGridDataController,
    IcxGridChartViewItemsProvider)
  private
    function GetGridViewValue: TcxGridDBChartView;
    function GetOnAfterSummary: TcxAfterSummaryEvent;
    function GetOnSummary: TcxSummaryEvent;
    procedure SetOnAfterSummary(Value: TcxAfterSummaryEvent);
    procedure SetOnSummary(Value: TcxSummaryEvent);
  protected
    { IcxCustomGridDataController }
    procedure AssignData(ADataController: TcxCustomDataController);
    procedure CreateAllItems(AMissingItemsOnly: Boolean);
    procedure DeleteAllItems;
    procedure GetFakeComponentLinks(AList: TList);
    function GetGridView: TcxCustomGridView;
    function HasAllItems: Boolean;
    function IsDataChangeable: Boolean;
    function IsDataLinked: Boolean;
    function SupportsCreateAllItems: Boolean;
    { IcxGridChartViewItemsProvider }
    function IcxGridChartViewItemsProvider.GetItem = GetChartItem;
    function GetChartItem(AItemClass: TcxGridChartItemClass; AIndex: Integer): TcxGridChartItem;
    procedure GetItemCaptions(AItemClass: TcxGridChartItemClass; ACaptions: TStringList);
    procedure InitItem(AItem: TcxGridChartItem; AIndex: Integer);

    procedure DoDataSourceChanged; override;
    procedure DoValueTypeClassChanged(AItemIndex: Integer); override;
    //function GetChartViewItemIndex: Integer; override;
    function GetItemID(AItem: TObject): Integer; override;
    function GetSortingBySummaryEngineClass: TcxSortingBySummaryEngineClass; override;
    procedure GetValidValueFields(AItemClass: TcxGridChartItemClass; AFields: TList);
    procedure Unlocked; override;
  public
    procedure BeginFullUpdate; override;
    procedure EndFullUpdate; override;
    function GetItem(Index: Integer): TObject; override;

    property GridView: TcxGridDBChartView read GetGridViewValue;
  published
    property DataModeController;
    property DataSource;
    property DetailKeyFieldNames;
    property KeyFieldNames;
    property MasterKeyFieldNames;
    property Options;
    property OnAfterSummary: TcxAfterSummaryEvent read GetOnAfterSummary write SetOnAfterSummary;
    property OnCompare;
    property OnDataChanged;
    property OnFilterRecord;
    property OnSummary: TcxSummaryEvent read GetOnSummary write SetOnSummary;
  end;

  TcxGridDBChartItemDataBinding = class(TcxGridChartItemDataBinding)
  private
    function GetDataController: TcxGridDBChartDataController;
    function GetField: TField;
    function GetFieldName: string;
    procedure SetFieldName(const Value: string);
  protected
    function GetDefaultDisplayText: string; override;
    function GetDefaultRepositoryItem: TcxEditRepositoryItem; override;
    function GetDefaultValuesProviderClass: TcxCustomEditDefaultValuesProviderClass; override;
    function GetDefaultValueTypeClass: TcxValueTypeClass; override;
    procedure InitDefaultValuesProvider(ADefaultValuesProvider: TcxCustomEditDefaultValuesProvider); override;
    function IsValueTypeStored: Boolean; override;
  public
    procedure Assign(Source: TPersistent); override;
    property DataController: TcxGridDBChartDataController read GetDataController;
    property Field: TField read GetField;
  published
    property FieldName: string read GetFieldName write SetFieldName;
  end;

  TcxGridDBChartCategories = class(TcxGridChartCategories)
  private
    function GetDataBinding: TcxGridDBChartItemDataBinding;
    procedure SetDataBinding(Value: TcxGridDBChartItemDataBinding);
  published
    property DataBinding: TcxGridDBChartItemDataBinding read GetDataBinding write SetDataBinding;
  end;

  TcxGridDBChartDataGroup = class(TcxGridChartDataGroup)
  private
    function GetDataBinding: TcxGridDBChartItemDataBinding;
    procedure SetDataBinding(Value: TcxGridDBChartItemDataBinding);
  published
    property DataBinding: TcxGridDBChartItemDataBinding read GetDataBinding write SetDataBinding;
  end;

  TcxGridDBChartSeries = class(TcxGridChartSeries)
  private
    function GetDataBinding: TcxGridDBChartItemDataBinding;
    procedure SetDataBinding(Value: TcxGridDBChartItemDataBinding);
  published
    property DataBinding: TcxGridDBChartItemDataBinding read GetDataBinding write SetDataBinding;
  end;

  TcxGridDBChartView = class(TcxGridChartView)
  private
    function GetCategories: TcxGridDBChartCategories;
    function GetDataController: TcxGridDBChartDataController;
    function GetDataGroup(Index: Integer): TcxGridDBChartDataGroup;
    function GetSeries(Index: Integer): TcxGridDBChartSeries;
    procedure SetCategories(Value: TcxGridDBChartCategories);
    procedure SetDataController(Value: TcxGridDBChartDataController);
    procedure SetDataGroup(Index: Integer; Value: TcxGridDBChartDataGroup);
    procedure SetSeries(Index: Integer; Value: TcxGridDBChartSeries);
  protected
    function GetCategoriesClass: TcxGridChartCategoriesClass; override;
    function GetDataControllerClass: TcxCustomDataControllerClass; override;
    function GetItemDataBindingClass: TcxGridChartItemDataBindingClass; override;

    function FindItemByFieldName(AItemClass: TcxGridChartItemClass; const AFieldName: string): TcxGridChartItem;
  public
    function CreateDataGroup: TcxGridDBChartDataGroup;
    function FindDataGroupByFieldName(const AFieldName: string): TcxGridDBChartDataGroup;
    function GetDataGroupClass: TcxGridChartDataGroupClass; override;
    property DataGroups[Index: Integer]: TcxGridDBChartDataGroup read GetDataGroup write SetDataGroup;

    function CreateSeries: TcxGridDBChartSeries;
    function FindSeriesByFieldName(const AFieldName: string): TcxGridDBChartSeries;
    function GetSeriesClass: TcxGridChartSeriesClass; override;
    property Series[Index: Integer]: TcxGridDBChartSeries read GetSeries write SetSeries;
  published
    property Categories: TcxGridDBChartCategories read GetCategories write SetCategories;
    property DataController: TcxGridDBChartDataController read GetDataController write SetDataController;
  end;

implementation

uses
  SysUtils, cxClasses, cxDBEdit, cxEditDBRegisteredRepositoryItems;

type
  TcxComponentAccess = class(TcxComponent);

{ TcxGridDBChartDataController }

function TcxGridDBChartDataController.GetGridViewValue: TcxGridDBChartView;
begin
  Result := TcxGridDBChartView(GetOwner);
end;

function TcxGridDBChartDataController.GetOnAfterSummary: TcxAfterSummaryEvent;
begin
  Result := Summary.OnAfterSummary;
end;

function TcxGridDBChartDataController.GetOnSummary: TcxSummaryEvent;
begin
  Result := Summary.DefaultGroupSummaryItems.OnSummary;
end;

procedure TcxGridDBChartDataController.SetOnAfterSummary(Value: TcxAfterSummaryEvent);
begin
  Summary.OnAfterSummary := Value;
end;

procedure TcxGridDBChartDataController.SetOnSummary(Value: TcxSummaryEvent);
begin
  Summary.DefaultGroupSummaryItems.OnSummary := Value;
end;

procedure TcxGridDBChartDataController.AssignData(ADataController: TcxCustomDataController);
begin
end;

procedure TcxGridDBChartDataController.CreateAllItems(AMissingItemsOnly: Boolean);
begin
end;

procedure TcxGridDBChartDataController.DeleteAllItems;
begin
end;

procedure TcxGridDBChartDataController.GetFakeComponentLinks(AList: TList);
begin
  if (DataSource <> nil) and (DataSource.Owner <> GridView.Owner) and
    (AList.IndexOf(DataSource.Owner) = -1) then
    AList.Add(DataSource.Owner);
end;

function TcxGridDBChartDataController.GetGridView: TcxCustomGridView;
begin
  Result := GridView;
end;

function TcxGridDBChartDataController.HasAllItems: Boolean;
begin
  Result := True;
end;

function TcxGridDBChartDataController.IsDataChangeable: Boolean;
begin
  Result := False;
end;

function TcxGridDBChartDataController.IsDataLinked: Boolean;
begin
  Result := DataSet <> nil;
end;

function TcxGridDBChartDataController.SupportsCreateAllItems: Boolean;
begin
  Result := False;
end;

function TcxGridDBChartDataController.GetChartItem(AItemClass: TcxGridChartItemClass;
  AIndex: Integer): TcxGridChartItem;
var
  AFields: TList;
begin
  AFields := TList.Create;
  try
    GetValidValueFields(AItemClass, AFields);
    Result := GridView.FindItemByFieldName(AItemClass, TField(AFields[AIndex]).FieldName);
  finally
    AFields.Free;
  end;
end;

procedure TcxGridDBChartDataController.GetItemCaptions(AItemClass: TcxGridChartItemClass;
  ACaptions: TStringList);
var
  AFields: TList;
  I: Integer;
begin
  AFields := TList.Create;
  try
    GetValidValueFields(AItemClass, AFields);
    for I := 0 to AFields.Count - 1 do
      ACaptions.Add(TField(AFields[I]).DisplayName);
  finally
    AFields.Free;
  end;
end;

procedure TcxGridDBChartDataController.InitItem(AItem: TcxGridChartItem; AIndex: Integer);
var
  AFields: TList;
begin
  AFields := TList.Create;
  try
    GetValidValueFields(TcxGridChartItemClass(AItem.ClassType), AFields);
    TcxGridDBChartItemDataBinding(AItem.DataBinding).FieldName := TField(AFields[AIndex]).FieldName;
  finally
    AFields.Free;
  end;
end;

procedure TcxGridDBChartDataController.DoDataSourceChanged;

⌨️ 快捷键说明

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