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 + -
显示快捷键?