viewchartdemomain.pas

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

PAS
733
字号
    miLineValueCaptionPosition[Ord(ALineDiagram.Values.CaptionPosition)].Checked := True;
    miLineStyle[Ord(ALineDiagram.Values.LineStyle)].Checked := True;
    miLineWidth.Find(IntToStr(ALineDiagram.Values.LineWidth)).Checked := True;
    miMarkerStyle[Ord(ALineDiagram.Values.MarkerStyle)].Checked := True;
    miMarkerSize.Find(IntToStr(ALineDiagram.Values.MarkerSize)).Checked := True;
    miValueStacking[Ord(ALineDiagram.Values.Stacking)].Checked := True;
  end;
  // pie
  APieDiagram := ActivePieDiagram;
  miSeriesCaptions.Visible := APieDiagram <> nil;
  miSeriesSites.Visible := APieDiagram <> nil;
  miSeriesColumnCount.Visible := APieDiagram <> nil;
  miPieValueCaptionPosition.Visible := APieDiagram <> nil;
  miPieValueCaptionItems.Visible := APieDiagram <> nil;
  if APieDiagram <> nil then
  begin
    miSeriesCaptions.Checked := APieDiagram.SeriesCaptions;
    miSeriesSites.Checked := APieDiagram.SeriesSites;
    miSeriesColumnCount.Enabled := APieDiagram.GetSeriesColumnCount > 0;
    if miSeriesColumnCount.Enabled then
      miSeriesColumnCount.Find(IntToStr(APieDiagram.GetSeriesColumnCount)).Checked := True;
    miPieValueCaptionPosition[Ord(APieDiagram.Values.CaptionPosition)].Checked := True;
    for ACaptionItem := Low(ACaptionItem) to High(ACaptionItem) do
      miPieValueCaptionItems[Ord(ACaptionItem)].Checked := ACaptionItem in APieDiagram.Values.CaptionItems;
  end;
end;

procedure TfrmMain.miAreaDiagramClick(Sender: TObject);
begin
  ActiveChart.DiagramArea.Active := True;
end;

procedure TfrmMain.CalculateSalesInfo;
var
  I: Integer;
begin
  for I := 1 to 4 do
    CalculateSalesInfoForQuarter(I);
end;

procedure TfrmMain.CalculateSalesInfoForQuarter(AQuarter: Integer);
const
  Year = 2002;
var
  AStartMonth, AFinishMonth, I: Integer;
begin
  AStartMonth := (AQuarter - 1) * 3 + 1;
  AFinishMonth := AQuarter * 3;

  qrSalesByQuarter.Active := False;
  qrSalesByQuarter.ParamByName('StartDate').AsDateTime := EncodeDate(Year, AStartMonth, 1);
  qrSalesByQuarter.ParamByName('FinishDate').AsDateTime := EncodeDate(Year, AFinishMonth,
    MonthDays[IsLeapYear(Year), AFinishMonth]);
  qrSalesByQuarter.Active := True;
  chvSalesByQuarter.ViewData.CategoryCount := qrSalesByQuarter.RecordCount;

  chvSalesByQuarter.BeginUpdate;
  try
    I := 0;
    qrSalesByQuarter.First;
    while not qrSalesByQuarter.Eof do
    begin
      chvSalesByQuarter.ViewData.Categories[I] := qrSalesByQuarter.FieldValues['Name'];
      chvSalesByQuarter.ViewData.Values[AQuarter - 1, I] := qrSalesByQuarter.FieldValues['Amount'];
      qrSalesByQuarter.Next;
      Inc(I);
    end;
  finally
    chvSalesByQuarter.EndUpdate;
  end;
end;

function TfrmMain.GetActiveAxis(AMenuItem: TObject): TcxGridChartHistogramAxis;
begin
  while (AMenuItem is TMenuItem) and
    (TMenuItem(AMenuItem).Tag = 0) do
    AMenuItem := TMenuItem(AMenuItem).Parent;
  case ((AMenuItem as TMenuItem).Tag) of
    1: Result := ActiveHistogram.AxisCategory;
    2: Result := ActiveHistogram.AxisValue;
  else
    Result := nil;
  end;
end;

procedure TfrmMain.FormActivate(Sender: TObject);
begin
  UpdateControls;  // to update menu after chart view was changed via Customization Form
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  grMainLevel3.Active := True;
  CalculateSalesInfo;
end;

procedure TfrmMain.chvSalesByQuarterGetValueHint(Sender: TcxGridChartView;
  ASeries: TcxGridChartSeries; AValueIndex: Integer; var AHint: String);
begin
  AHint := Format('%s sales for Q%d are %s',
    [Sender.ViewData.Categories[AValueIndex], ASeries.Index + 1, ASeries.VisibleDisplayTexts[AValueIndex]]);
end;

procedure TfrmMain.chvSalesDiagramAreaCustomDrawValueArea(
  Sender: TcxGridChartAreaDiagram; ACanvas: TcxCanvas;
  AViewInfo: TcxGridChartAreaDiagramValueViewInfo; var ADone: Boolean);
var
  AClipRegion, ARegion: TcxRegion;
begin
  AClipRegion := ACanvas.GetClipRegion;
  try
    ARegion := AViewInfo.CreateAreaRegion;
    try
      ACanvas.SetClipRegion(ARegion, roIntersect, False);
      FillGradientRect(ACanvas.Handle, AViewInfo.GetRealBounds, clWhite, clMedGray, True);
    finally
      ARegion.Free;
    end;
  finally
    ACanvas.SetClipRegion(AClipRegion, roSet);
  end;
  ADone := True;
end;

procedure TfrmMain.miExitClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmMain.miAboutClick(Sender: TObject);
begin
  ShowAboutDemoForm;
end;

procedure TfrmMain.chvSalesSeries1CustomDrawValue(
  Sender: TcxGridChartSeries; ACanvas: TcxCanvas;
  AViewInfo: TcxGridChartDiagramValueViewInfo; var ADone: Boolean);
var
  AEndColor: TColor;
begin
  if Sender.GridView.DiagramColumn.Active or Sender.GridView.DiagramBar.Active then
  begin
    if AViewInfo.State = gcsNone then
      AEndColor := clBlack
    else
      AEndColor := clGray;
    FillGradientRect(ACanvas.Handle, AViewInfo.ContentBounds, clWhite, AEndColor,
      Sender.GridView.DiagramColumn.Active);
    ADone := True;
  end;
end;

procedure TfrmMain.chvSalesValueClick(Sender: TcxGridChartView;
  ASeries: TcxGridChartSeries; AValueIndex: Integer; var AHandled: Boolean);
begin
  qrSales.Locate('Name', Sender.Categories.VisibleValues[AValueIndex], []);
  tblOrders.Locate('ProductID', qrSales.FieldByName('ID').AsInteger, []);
  grMainLevel1.Active := True;
end;

procedure TfrmMain.grMainActiveTabChanged(Sender: TcxCustomGrid;
  ALevel: TcxGridLevel);
begin
  UpdateControls;
end;

procedure TfrmMain.miLineDiagramClick(Sender: TObject);
begin
  ActiveChart.DiagramLine.Active := True;
end;

procedure TfrmMain.miLineStyleClick(Sender: TObject);
begin
  ActiveLineDiagram.Values.LineStyle := TcxGridChartLineStyle(TMenuItem(Sender).MenuIndex);
  UpdateControls;
end;

procedure TfrmMain.miLineValueCaptionPositionClick(Sender: TObject);
begin
  ActiveLineDiagram.Values.CaptionPosition :=
    TcxGridChartLineDiagramValueCaptionPosition(TMenuItem(Sender).MenuIndex);
  UpdateControls;
end;

procedure TfrmMain.miLineWidthClick(Sender: TObject);
begin
  ActiveLineDiagram.Values.LineWidth := StrToInt(TMenuItem(Sender).Caption);
  UpdateControls;
end;

procedure TfrmMain.miMarkerSizeClick(Sender: TObject);
begin
  ActiveLineDiagram.Values.MarkerSize := StrToInt(TMenuItem(Sender).Caption);
  UpdateControls;
end;

procedure TfrmMain.miMarkerStyleClick(Sender: TObject);
begin
  ActiveLineDiagram.Values.MarkerStyle := TcxGridChartMarkerStyle(TMenuItem(Sender).MenuIndex);
  UpdateControls;
end;

procedure TfrmMain.miColumnDiagramClick(Sender: TObject);
begin
  ActiveChart.DiagramColumn.Active := True;
end;

procedure TfrmMain.miBarDiagramClick(Sender: TObject);
begin
  ActiveChart.DiagramBar.Active := True;
end;

procedure TfrmMain.miTitlePositionItemClick(Sender: TObject);
begin
  ActiveChart.Title.Position := TcxGridChartPartPosition(TMenuItem(Sender).MenuIndex);
  UpdateControls;  
end;

procedure TfrmMain.miToolBoxClick(Sender: TObject);
begin
  with ActiveChart.ToolBox do
    if Visible = tvNever then
      Visible := tvAlways
    else
      Visible := tvNever;
  UpdateControls;
end;

procedure TfrmMain.miToolBoxPositionClick(Sender: TObject);
begin
  ActiveChart.ToolBox.Position := TcxGridChartToolBoxPosition(TMenuItem(Sender).MenuIndex);
  UpdateControls;
end;

procedure TfrmMain.miLegendPositionItemClick(Sender: TObject);
begin
  ActiveChart.ActiveDiagram.Legend.Position := TcxGridChartPartPosition(TMenuItem(Sender).MenuIndex);
  UpdateControls;  
end;

procedure TfrmMain.miLegendBorderClick(Sender: TObject);
begin
  if not TMenuItem(Sender).Checked then
    ActiveChart.ActiveDiagram.Legend.Border := lbSingle
  else
    ActiveChart.ActiveDiagram.Legend.Border := lbNone;
  UpdateControls;  
end;

procedure TfrmMain.miValueCaptionPositionItemClick(Sender: TObject);
begin
  ActiveColumnDiagram.Values.CaptionPosition :=
    TcxGridChartColumnDiagramValueCaptionPosition(TMenuItem(Sender).MenuIndex);
  UpdateControls;
end;

procedure TfrmMain.miValueStackingClick(Sender: TObject);
begin
  ActiveLineDiagram.Values.Stacking := TcxGridChartValuesStacking(TMenuItem(Sender).MenuIndex);
  UpdateControls;
end;

procedure TfrmMain.miPieValueCaptionItemClick(Sender: TObject);
var
  ACaptionItem: TcxGridChartPieDiagramValueCaptionItem;
begin
  ACaptionItem := TcxGridChartPieDiagramValueCaptionItem(TMenuItem(Sender).MenuIndex);
  with ActivePieDiagram.Values do
    if ACaptionItem in CaptionItems then
      CaptionItems := CaptionItems - [ACaptionItem]
    else
      CaptionItems := CaptionItems + [ACaptionItem];
  UpdateControls;    
end;

procedure TfrmMain.miPieValueCaptionPositionClick(Sender: TObject);
begin
  ActivePieDiagram.Values.CaptionPosition :=
    TcxGridChartPieDiagramValueCaptionPosition(TMenuItem(Sender).MenuIndex);
  UpdateControls;  
end;

procedure TfrmMain.miPieDiagramClick(Sender: TObject);
begin
  ActiveChart.DiagramPie.Active := True;
end;

procedure TfrmMain.miSeriesCaptionsClick(Sender: TObject);
begin
  with ActivePieDiagram do
    SeriesCaptions := not SeriesCaptions;
  UpdateControls;
end;

procedure TfrmMain.miSeriesColumnsClick(Sender: TObject);
begin
  ActivePieDiagram.SeriesColumnCount := StrToInt(TMenuItem(Sender).Caption);
  UpdateControls;
end;

procedure TfrmMain.miSeriesSitesClick(Sender: TObject);
begin
  with ActivePieDiagram do
    SeriesSites := not SeriesSites;
  UpdateControls;
end;

procedure TfrmMain.chvSalesActiveDiagramChanged(Sender: TcxGridChartView;
  ADiagram: TcxGridChartDiagram);
begin
  if Sender = ActiveChart then UpdateControls;
end;

procedure TfrmMain.miAxisVisibleClick(Sender: TObject);
begin
  with GetActiveAxis(Sender) do
    Visible := not Visible;
  UpdateControls;
end;

procedure TfrmMain.miAxisGridLinesClick(Sender: TObject);
begin
  with GetActiveAxis(Sender) do
    GridLines := not GridLines;
  UpdateControls;  
end;

procedure TfrmMain.miAxisTickMarkKindItemClick(Sender: TObject);
begin
  GetActiveAxis(Sender).TickMarkKind := TcxGridChartHistogramTickMarkKind(TMenuItem(Sender).MenuIndex);
  UpdateControls;  
end;

procedure TfrmMain.miAxisTickMarkLabelsClick(Sender: TObject);
begin
  with GetActiveAxis(Sender) do
    TickMarkLabels := not TickMarkLabels;
  UpdateControls;
end;

procedure TfrmMain.miCategoryAxisCategoriesInReverseOrderClick(
  Sender: TObject);
begin
  with GetActiveAxis(Sender) as TcxGridChartHistogramAxisCategory do
    CategoriesInReverseOrder := not CategoriesInReverseOrder;
  UpdateControls;  
end;

procedure TfrmMain.miCategoryAxisValueAxisAtMaxCategoryClick(
  Sender: TObject);
begin
  with GetActiveAxis(Sender) as TcxGridChartHistogramAxisCategory do
    ValueAxisAtMaxCategory := not ValueAxisAtMaxCategory;
  UpdateControls;
end;

procedure TfrmMain.miCategoryAxisValueAxisBetweenCategoriesClick(
  Sender: TObject);
begin
  with GetActiveAxis(Sender) as TcxGridChartHistogramAxisCategory do
    ValueAxisBetweenCategories := not ValueAxisBetweenCategories;
  UpdateControls;  
end;

end.

⌨️ 快捷键说明

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