viewchartdemomain.pas

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

PAS
733
字号
unit ViewChartDemoMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxDataStorage, cxEdit, DB, cxDBData, cxGridChartView, cxGridDBChartView,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, DBTables,
  cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, cxTimeEdit,
  cxImageComboBox, ImgList, cxLookAndFeels, Menus, StdCtrls;

type
  TfrmMain = class(TForm)
    tvData: TcxGridDBTableView;
    grMainLevel1: TcxGridLevel;
    grMain: TcxGrid;
    dsOrders: TDataSource;
    tblOrders: TTable;
    grMainLevel2: TcxGridLevel;
    chvSales: TcxGridDBChartView;
    qrSales: TQuery;
    dsSales: TDataSource;
    tblOrdersID: TAutoIncField;
    tblOrdersCustomerID: TIntegerField;
    tblOrdersProductID: TIntegerField;
    tblOrdersPurchaseDate: TDateTimeField;
    tblOrdersTime: TDateTimeField;
    tblOrdersPaymentType: TStringField;
    tblOrdersPaymentAmount: TCurrencyField;
    tblOrdersDescription: TMemoField;
    tblOrdersQuantity: TIntegerField;
    tblProducts: TTable;
    tblOrdersProductName: TStringField;
    tblCustomers: TTable;
    dbMain: TDatabase;
    tblOrdersCustomer: TStringField;
    tvDataID: TcxGridDBColumn;
    tvDataPurchaseDate: TcxGridDBColumn;
    tvDataPaymentType: TcxGridDBColumn;
    tvDataPaymentAmount: TcxGridDBColumn;
    tvDataQuantity: TcxGridDBColumn;
    tvDataProductName: TcxGridDBColumn;
    tvDataCompany: TcxGridDBColumn;
    chvSalesByQuarter: TcxGridChartView;
    chvSalesByQuarterSeries1: TcxGridChartSeries;
    chvSalesByQuarterSeries2: TcxGridChartSeries;
    chvSalesByQuarterSeries3: TcxGridChartSeries;
    chvSalesByQuarterSeries4: TcxGridChartSeries;
    grMainLevel3: TcxGridLevel;
    qrSalesByQuarter: TQuery;
    chvSalesSeries1: TcxGridDBChartSeries;
    PaymentTypeImages: TImageList;
    LookAndFeelController: TcxLookAndFeelController;
    mmMain: TMainMenu;
    miFile: TMenuItem;
    miExit: TMenuItem;
    miAbout: TMenuItem;
    cxStyleRepository1: TcxStyleRepository;
    cxStyle1: TcxStyle;
    cxStyle2: TcxStyle;
    cxStyle3: TcxStyle;
    cxStyle4: TcxStyle;
    miColumnDiagram: TMenuItem;
    miBarDiagram: TMenuItem;
    N1: TMenuItem;
    miView: TMenuItem;
    miTitlePosition: TMenuItem;
    miLegendPosition: TMenuItem;
    miLegendBorder: TMenuItem;
    miValueCaptionPosition: TMenuItem;
    miCategoryAxis: TMenuItem;
    miCategoryAxisVisible: TMenuItem;
    miCategoryAxisTickMarkLabels: TMenuItem;
    miCategoryAxisTickMarkKind: TMenuItem;
    miCategoryAxisGridLines: TMenuItem;
    miTitlePositionDefault: TMenuItem;
    miTitlePositionNone: TMenuItem;
    miTitlePositionLeft: TMenuItem;
    miTitlePositionTop: TMenuItem;
    miTitlePositionRight: TMenuItem;
    miTitlePositionBottom: TMenuItem;
    miLegendPositionDefault: TMenuItem;
    miLegendPositionNone: TMenuItem;
    miLegendPositionLeft: TMenuItem;
    miLegendPositionTop: TMenuItem;
    miLegendPositionRight: TMenuItem;
    miLegendPositionBottom: TMenuItem;
    miValueCaptionPositionNone: TMenuItem;
    miValueCaptionPositionInsideBase: TMenuItem;
    miValueCaptionPositionCenter: TMenuItem;
    miValueCaptionPositionInsideEnd: TMenuItem;
    miValueCaptionPositionOutsideEnd: TMenuItem;
    miCategoryAxisTickMarkKindNone: TMenuItem;
    miCategoryAxisTickMarkKindCross: TMenuItem;
    miCategoryAxisTickMarkKindInside: TMenuItem;
    miCategoryAxisTickMarkKindOutside: TMenuItem;
    miValueAxis: TMenuItem;
    miValueAxisTickMarkLabels: TMenuItem;
    miValueAxisTickMarkKind: TMenuItem;
    miValueAxisTickMarkKindOutside: TMenuItem;
    miValueAxisTickMarkKindInside: TMenuItem;
    miValueAxisTickMarkKindCross: TMenuItem;
    miValueAxisTickMarkKindNone: TMenuItem;
    miValueAxisGridLines: TMenuItem;
    miValueAxisVisible: TMenuItem;
    miCategoryAxisCategoriesInReverseOrder: TMenuItem;
    miCategoryAxisValueAxisAtMaxCategory: TMenuItem;
    miCategoryAxisValueAxisBetweenCategories: TMenuItem;
    N3: TMenuItem;
    Label1: TLabel;
    miLineDiagram: TMenuItem;
    miAreaDiagram: TMenuItem;
    miPieDiagram: TMenuItem;
    miDiagram: TMenuItem;
    miLineValueCaptionPosition: TMenuItem;
    miLineValueCaptionPositionNone: TMenuItem;
    miLineValueCaptionPositionLeft: TMenuItem;
    miLineValueCaptionPositionAbove: TMenuItem;
    miLineValueCaptionPositionRight: TMenuItem;
    miLineValueCaptionPositionBelow: TMenuItem;
    miLineValueCaptionPositionCenter: TMenuItem;
    miLineStyle: TMenuItem;
    miLineStyleNone: TMenuItem;
    miLineStyleSolid: TMenuItem;
    miLineStyleDash: TMenuItem;
    miLineStyleDot: TMenuItem;
    miLineStyleDashDot: TMenuItem;
    miLineStyleDashDotDot: TMenuItem;
    N2: TMenuItem;
    miMarkerStyle: TMenuItem;
    miMarkerStyleNone: TMenuItem;
    miMarkerStyleSquare: TMenuItem;
    miMarkerStyleTriangle: TMenuItem;
    miMarkerStyleDiamond: TMenuItem;
    miMarkerStyleCircle: TMenuItem;
    miValueStacking: TMenuItem;
    miValueStackingNone: TMenuItem;
    miValueStackingNormal: TMenuItem;
    miValueStacking100Percent: TMenuItem;
    miLineWidth: TMenuItem;
    miLineWidth1: TMenuItem;
    miLineWidth2: TMenuItem;
    miLineWidth3: TMenuItem;
    miLineWidth4: TMenuItem;
    miLineWidth5: TMenuItem;
    miMarkerSize: TMenuItem;
    miMarkerSize3: TMenuItem;
    miMarkerSize5: TMenuItem;
    miMarkerSize7: TMenuItem;
    miMarkerSize9: TMenuItem;
    miMarkerSize11: TMenuItem;
    miSeriesCaptions: TMenuItem;
    miSeriesColumnCount: TMenuItem;
    miSeriesSites: TMenuItem;
    miPieValueCaptionPosition: TMenuItem;
    miPieValueCaptionItems: TMenuItem;
    miSeriesColumns1: TMenuItem;
    miSeriesColumns2: TMenuItem;
    miSeriesColumns3: TMenuItem;
    miSeriesColumns4: TMenuItem;
    miPieValueCaptionPositionNone: TMenuItem;
    miPieValueCaptionPositionCenter: TMenuItem;
    miPieValueCaptionPositionInsideEnd: TMenuItem;
    miPieValueCaptionPositionOutsideEnd: TMenuItem;
    miPieValueCaptionPositionOutsideEndWithLeaderLines: TMenuItem;
    miPieValueCaptionItemCategory: TMenuItem;
    miPieValueCaptionItemValue: TMenuItem;
    miPieValueCaptionItemPercentage: TMenuItem;
    cxStyle5: TcxStyle;
    cxStyle6: TcxStyle;
    miToolBox: TMenuItem;
    N4: TMenuItem;
    miToolBoxPosition: TMenuItem;
    miToolBoxPositionTop: TMenuItem;
    miToolBoxPositionBottom: TMenuItem;
    cxStyle7: TcxStyle;
    procedure FormCreate(Sender: TObject);
    procedure chvSalesByQuarterGetValueHint(Sender: TcxGridChartView;
      ASeries: TcxGridChartSeries; AValueIndex: Integer;
      var AHint: String);
    procedure miExitClick(Sender: TObject);
    procedure miAboutClick(Sender: TObject);
    procedure chvSalesSeries1CustomDrawValue(Sender: TcxGridChartSeries;
      ACanvas: TcxCanvas; AViewInfo: TcxGridChartDiagramValueViewInfo;
      var ADone: Boolean);
    procedure grMainActiveTabChanged(Sender: TcxCustomGrid;
      ALevel: TcxGridLevel);
    procedure miColumnDiagramClick(Sender: TObject);
    procedure miBarDiagramClick(Sender: TObject);
    procedure miTitlePositionItemClick(Sender: TObject);
    procedure miLegendPositionItemClick(Sender: TObject);
    procedure miLegendBorderClick(Sender: TObject);
    procedure miValueCaptionPositionItemClick(Sender: TObject);
    procedure chvSalesActiveDiagramChanged(Sender: TcxGridChartView;
      ADiagram: TcxGridChartDiagram);
    procedure miAxisVisibleClick(Sender: TObject);
    procedure miAxisGridLinesClick(Sender: TObject);
    procedure miAxisTickMarkKindItemClick(Sender: TObject);
    procedure miAxisTickMarkLabelsClick(Sender: TObject);
    procedure miCategoryAxisCategoriesInReverseOrderClick(Sender: TObject);
    procedure miCategoryAxisValueAxisAtMaxCategoryClick(Sender: TObject);
    procedure miCategoryAxisValueAxisBetweenCategoriesClick(
      Sender: TObject);
    procedure miLineDiagramClick(Sender: TObject);
    procedure miAreaDiagramClick(Sender: TObject);
    procedure miPieDiagramClick(Sender: TObject);
    procedure miLineValueCaptionPositionClick(Sender: TObject);
    procedure miLineStyleClick(Sender: TObject);
    procedure miMarkerStyleClick(Sender: TObject);
    procedure miValueStackingClick(Sender: TObject);
    procedure miLineWidthClick(Sender: TObject);
    procedure miMarkerSizeClick(Sender: TObject);
    procedure miSeriesCaptionsClick(Sender: TObject);
    procedure miSeriesSitesClick(Sender: TObject);
    procedure miSeriesColumnsClick(Sender: TObject);
    procedure miPieValueCaptionPositionClick(
      Sender: TObject);
    procedure miPieValueCaptionItemClick(Sender: TObject);
    procedure chvSalesDiagramAreaCustomDrawValueArea(
      Sender: TcxGridChartAreaDiagram; ACanvas: TcxCanvas;
      AViewInfo: TcxGridChartAreaDiagramValueViewInfo; var ADone: Boolean);
    procedure chvSalesValueClick(Sender: TcxGridChartView;
      ASeries: TcxGridChartSeries; AValueIndex: Integer; var AHandled: Boolean);
    procedure miToolBoxClick(Sender: TObject);
    procedure miToolBoxPositionClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    function GetActiveChart: TcxGridChartView;
    function GetActiveColumnDiagram: TcxGridChartColumnDiagram;
    function GetActiveHistogram: TcxGridChartHistogram;
    function GetActiveLineDiagram: TcxGridChartLineDiagram;
    function GetActivePieDiagram: TcxGridChartPieDiagram;
  protected
    procedure UpdateControls;
  public
    procedure CalculateSalesInfo;
    procedure CalculateSalesInfoForQuarter(AQuarter: Integer);
    function GetActiveAxis(AMenuItem: TObject): TcxGridChartHistogramAxis;

    property ActiveChart: TcxGridChartView read GetActiveChart;
    property ActiveColumnDiagram: TcxGridChartColumnDiagram read GetActiveColumnDiagram;
    property ActiveHistogram: TcxGridChartHistogram read GetActiveHistogram;
    property ActiveLineDiagram: TcxGridChartLineDiagram read GetActiveLineDiagram;
    property ActivePieDiagram: TcxGridChartPieDiagram read GetActivePieDiagram;
  end;

var
  frmMain: TfrmMain;

implementation

uses
  dxOffice11, cxGridCommon, AboutDemoForm;

{$R *.dfm}

function TfrmMain.GetActiveChart: TcxGridChartView;
begin
  if grMain.ActiveView is TcxGridChartView then
    Result := TcxGridChartView(grMain.ActiveView)
  else
    Result := nil;
end;

function TfrmMain.GetActiveColumnDiagram: TcxGridChartColumnDiagram;
begin
  if ActiveChart.ActiveDiagram is TcxGridChartColumnDiagram then
    Result := TcxGridChartColumnDiagram(ActiveChart.ActiveDiagram)
  else
    Result := nil;
end;

function TfrmMain.GetActiveHistogram: TcxGridChartHistogram;
begin
  if ActiveChart.ActiveDiagram is TcxGridChartHistogram then
    Result := TcxGridChartHistogram(ActiveChart.ActiveDiagram)
  else
    Result := nil;
end;

function TfrmMain.GetActiveLineDiagram: TcxGridChartLineDiagram;
begin
  if ActiveChart.ActiveDiagram is TcxGridChartLineDiagram then
    Result := TcxGridChartLineDiagram(ActiveChart.ActiveDiagram)
  else
    Result := nil;
end;

function TfrmMain.GetActivePieDiagram: TcxGridChartPieDiagram;
begin
  if ActiveChart.ActiveDiagram is TcxGridChartPieDiagram then
    Result := TcxGridChartPieDiagram(ActiveChart.ActiveDiagram)
  else
    Result := nil;
end;

procedure TfrmMain.UpdateControls;
var
  AChart: TcxGridChartView;
  AHistogram: TcxGridChartHistogram;
  AColumnDiagram: TcxGridChartColumnDiagram;
  ALineDiagram: TcxGridChartLineDiagram;
  APieDiagram: TcxGridChartPieDiagram;
  ACaptionItem: TcxGridChartPieDiagramValueCaptionItem;
begin
  AChart := ActiveChart;
  miView.Enabled := AChart <> nil;
  miDiagram.Enabled := miView.Enabled;
  if AChart = nil then Exit;

  { view }
  if AChart.DiagramColumn.Active then
    miColumnDiagram.Checked := True
  else
    if AChart.DiagramBar.Active then
      miBarDiagram.Checked := True
    else
      if AChart.DiagramLine.Active then
        miLineDiagram.Checked := True
      else
        if AChart.DiagramArea.Active then
          miAreaDiagram.Checked := True
        else
          miPieDiagram.Checked := True;
  miTitlePosition[Ord(AChart.Title.Position)].Checked := True;
  miLegendPosition[Ord(AChart.ActiveDiagram.Legend.Position)].Checked := True;
  miLegendBorder.Checked := AChart.ActiveDiagram.Legend.GetBorder = lbSingle;
  miToolBox.Checked := AChart.ToolBox.Visible <> tvNever;
  miToolBoxPosition[Ord(AChart.ToolBox.Position)].Checked := True;

  { diagram }
  // histogram
  AHistogram := ActiveHistogram;
  miCategoryAxis.Visible := AHistogram <> nil;
  miValueAxis.Visible := AHistogram <> nil;
  if AHistogram <> nil then
  begin
    // category axis
    miCategoryAxisVisible.Checked := AHistogram.AxisCategory.Visible;
    miCategoryAxisGridLines.Checked := AHistogram.AxisCategory.GridLines;
    miCategoryAxisTickMarkKind[Ord(AHistogram.AxisCategory.TickMarkKind)].Checked := True;
    miCategoryAxisTickMarkLabels.Checked := AHistogram.AxisCategory.TickMarkLabels;
    miCategoryAxisCategoriesInReverseOrder.Checked := AHistogram.AxisCategory.CategoriesInReverseOrder;
    miCategoryAxisValueAxisAtMaxCategory.Checked := AHistogram.AxisCategory.ValueAxisAtMaxCategory;
    miCategoryAxisValueAxisBetweenCategories.Checked := AHistogram.AxisCategory.ValueAxisBetweenCategories;
    // value axis
    miValueAxisVisible.Checked := AHistogram.AxisValue.Visible;
    miValueAxisGridLines.Checked := AHistogram.AxisValue.GridLines;
    miValueAxisTickMarkKind[Ord(AHistogram.AxisValue.TickMarkKind)].Checked := True;
    miValueAxisTickMarkLabels.Checked := AHistogram.AxisValue.TickMarkLabels;
  end;
  // column
  AColumnDiagram := ActiveColumnDiagram;
  miValueCaptionPosition.Visible := AColumnDiagram <> nil;
  if AColumnDiagram <> nil then
    miValueCaptionPosition[Ord(AColumnDiagram.Values.CaptionPosition)].Checked := True;
  // line
  ALineDiagram := ActiveLineDiagram;
  miLineValueCaptionPosition.Visible := ALineDiagram <> nil;
  miLineStyle.Visible := ALineDiagram <> nil;
  miLineWidth.Visible := ALineDiagram <> nil;
  miMarkerStyle.Visible := ALineDiagram <> nil;
  miMarkerSize.Visible := ALineDiagram <> nil;
  miValueStacking.Visible := ALineDiagram <> nil;
  if ALineDiagram <> nil then
  begin

⌨️ 快捷键说明

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