📄 jvqchartdemofm.pas
字号:
Chart.Data.Value[2, I] := 1.0; // Use special Math.NaN const
end;
ListBox1.Items.Append(Chart.Data.DebugStr(I));
end;
with Chart.Options do
begin
Title := 'Chart Title';
XAxisHeader := 'Date/Time';
YAxisHeader := 'Readings (ng/m3)';
if FNegValueFlag then
begin
PrimaryYAxis.YMin := -20;
PrimaryYAxis.YMax := 20;
end
else
PrimaryYAxis.YMin := 0;
// Try out the pen styles:
if ChartKind = ckChartStackedBar then
PenStyle[0] := psClear // THIS IS HOW YOU TEMPORARILY HIDE ONE PEN!
else
PenStyle[0] := psSolid;
PenStyle[1] := psDash;
PenStyle[2] := psDot;
if MenuSecondaryAxisMode.Checked then
begin
PenCount := 4; // Add a pen for right side demo.
SecondaryYAxis.YMax := 140; // Example shows Q/A percentage. Experimental results
// results are compared to expected results, and the
// response percentage, is plotted from 0% to 140%
// of expected value.
SecondaryYAxis.YLegendDecimalPlaces := 2;
PenSecondaryAxisFlag[3] := True; // Move pen index 3 (Fourth pen) to secondary axis.
PenMarkerKind[3] := pmkDiamond;
PenValueLabels[3] := true; // Label with text.
PenStyle[3] := psClear; // Markers only, no lines.
PenColor[3] := clGray;
MarkerSize := 5; // Make 'em bigger.
end
else
begin
PenCount := 3;
MarkerSize := 3; // Make 'em little
end;
PenLegends.Clear;
PenLegends.Add('HgT');
PenLegends.Add('Hg0');
PenLegends.Add('Hg2+');
if MenuSecondaryAxisMode.Checked then
PenLegends.Add('Quality%');
PenUnit.Clear;
PenUnit.Add('ug/m3');
PenUnit.Add('ug/m3');
PenUnit.Add('ug/m3');
if MenuSecondaryAxisMode.Checked then
PenUnit.Add('%'); // Optional Pen in percentage scale.
//ShowLegend := TRUE;
Legend := clChartLegendBelow;
//ChartKind := ckChartLine;
end;
// Chart.AutoFormatGraph;
Chart.PlotGraph;
//Chart.ResizeChartCanvas;
end;
procedure TJvChartDemoForm.FormResize(Sender: TObject);
begin
if Assigned(Chart) then
Chart.ResizeChartCanvas;
end;
procedure TJvChartDemoForm.ButtonBarChartClick(Sender: TObject);
begin
Chart.Options.ChartKind := ckChartBar;
NewValues;
//Chart.PlotGraph;
end;
procedure TJvChartDemoForm.ButtonLineClick(Sender: TObject);
var
I: Integer;
begin
Chart.Options.ChartKind := ckChartLine;
for I := 0 to Chart.Options.PenCount - 1 do
begin
Chart.Options.PenMarkerKind[I] := pmkNone;
end;
NewValues;
end;
procedure TJvChartDemoForm.ButtonLineMarkerClick(Sender: TObject);
//var
// I:Integer;
begin
Chart.Options.ChartKind := ckChartLine;
Chart.Options.PenMarkerKind[0] := pmkDiamond; // demonstrate both Diamond and Circle Marks.
Chart.Options.PenMarkerKind[1] := pmkDiamond;
Chart.Options.PenMarkerKind[2] := pmkCircle;
NewValues;
end;
procedure TJvChartDemoForm.ButtonStackedBarAveClick(Sender: TObject);
begin
Chart.Options.ChartKind := ckChartStackedBarAverage;
NewValues;
end;
procedure TJvChartDemoForm.ButtonStackedBarClick(Sender: TObject);
begin
Chart.Options.ChartKind := ckChartStackedBar;
NewValues;
end;
procedure TJvChartDemoForm.SpeedButton7Click(Sender: TObject);
begin
// Chart.PivotData; // TODO: This causes exceptions. not sure why we want this.
end;
procedure TJvChartDemoForm.ButtonBarAveClick(Sender: TObject);
begin
//Chart.ShowAsBarWithAve;
Chart.Options.ChartKind := ckChartBarAverage;
NewValues;
//Chart.Plo
end;
procedure TJvChartDemoForm.ButtonPieClick(Sender: TObject);
begin
// Chart.ShowAsPie;
Chart.Options.ChartKind := ckChartPieChart;
end;
procedure TJvChartDemoForm.ButtonMarkersClick(Sender: TObject);
begin
//Chart.ShowAsMark;
Chart.Options.ChartKind := ckChartMarkers;
end;
procedure TJvChartDemoForm.SpinEdit1Change(Sender: TObject);
begin
// Chart.Options.ColorScheme := SpinEdit1.Value;
// Chart.PlotGraph;
end;
procedure TJvChartDemoForm.Button2Click(Sender: TObject);
begin
Chart.PlotGraph;
end;
procedure TJvChartDemoForm.Button4Click(Sender: TObject);
begin
// Chart.AutoFormatGraph; WAP Removed. BAD CODE.
Chart.PlotGraph;
end;
procedure TJvChartDemoForm.ButtonDeltaAverageClick(Sender: TObject);
begin
Chart.Options.ChartKind := ckChartDeltaAverage;
end;
procedure TJvChartDemoForm.FormCreate(Sender: TObject);
begin
FStatHgt := TStatArray.Create(10); // Initialize for rolling average of last 10 samples.
FStatHg0 := TStatArray.Create(10);
if Assigned(Chart) then
// Chart.ShowAsLineWithMark;
NewValues;
end;
procedure TJvChartDemoForm.Panel2DblClick(Sender: TObject);
begin
ShellExecute(HWND(nil), 'show', 'http://homepages.borland.com/jedi/jvcl/', nil, nil, SW_SHOW);
end;
procedure TJvChartDemoForm.ShowgapinLineChart1Click(Sender: TObject);
begin
ShowgapinLineChart1.Checked := not ShowgapinLineChart1.Checked;
ButtonLine.Down := true;
NewValues;
end;
procedure TJvChartDemoForm.Print1Click(Sender: TObject);
begin
if PrinterSetupDialog1.Execute then
Chart.PrintGraph;
end;
procedure TJvChartDemoForm.Generatenewrandomvalues1Click(Sender: TObject);
begin
NewValues;
end;
procedure TJvChartDemoForm.CopyToClipboard1Click(Sender: TObject);
begin
Chart.GraphToClipboard;
end;
procedure TJvChartDemoForm.SetHeaderFont1Click(Sender: TObject);
begin
{Get the current font for the Header text...}
FontDialog1.Font.Assign(Chart.Options.AxisFont);
if FontDialog1.Execute then
{Set the font for the Header text...}
Chart.Options.AxisFont := FontDialog1.Font;
Chart.PlotGraph;
Chart.Invalidate;
end;
procedure TJvChartDemoForm.About1Click(Sender: TObject);
begin
Application.MessageBox(PChar(
'JvChart comes from AABSoft Graph written by M錼ten Henrichson, JVCL 3.0 ' +
'version by Warren Postma. '), 'About JvChart');
end;
procedure TJvChartDemoForm.AboutJVCL301Click(Sender: TObject);
begin
TJvJVCLAboutForm.Execute(False);
end;
procedure TJvChartDemoForm.Scrolling1Click(Sender: TObject);
begin
Scrolling1.Checked := not Scrolling1.Checked;
Timer1.Enabled := Scrolling1.Checked;
end;
procedure TJvChartDemoForm.Timer1Timer(Sender: TObject);
begin
Chart.Data.Scroll;
_Generate;
_StoreValue(Chart.Data.ValueCount - 1);
Chart.PlotGraph;
end;
procedure TJvChartDemoForm.ShowDataInListbox1Click(Sender: TObject);
begin
ShowDataInListbox1.Checked := not ShowDataInListbox1.Checked;
ListBox1.Visible := ShowDataInListbox1.Checked;
if not ShowDataInListbox1.Checked then
begin
Chart.CursorPosition := -1; // Invisible.
end;
end;
procedure TJvChartDemoForm.LargeDataset576samples1Click(Sender: TObject);
begin
LargeDataset576samples1.Checked := not LargeDataset576samples1.Checked;
NewValues;
end;
procedure TJvChartDemoForm.DateTimeAxisModeClick(Sender: TObject);
begin
DateTimeAxisMode.Checked := not DateTimeAxisMode.Checked;
NewValues;
end;
procedure TJvChartDemoForm.FormDestroy(Sender: TObject);
begin
FreeAndNil(FStatHgt);
FreeAndNil(FStatHg0);
end;
procedure TJvChartDemoForm.PrintOptions1Click(Sender: TObject);
begin
PrinterSetupDialog1.Execute;
end;
procedure TJvChartDemoForm.MenuSecondaryAxisModeClick(Sender: TObject);
begin
MenuSecondaryAxisMode.Checked := not MenuSecondaryAxisMode.Checked;
if MenuSecondaryAxisMode.Checked then
begin
ButtonLine.Down := true;
ButtonLineClick(Sender);
end
else
NewValues;
end;
procedure TJvChartDemoForm.ListBox1DblClick(Sender: TObject);
begin
Chart.CursorPosition := ListBox1.ItemIndex; // Highlight one sample.
end;
procedure TJvChartDemoForm.ListBox1Click(Sender: TObject);
begin
Chart.CursorPosition := ListBox1.ItemIndex; // Highlight one sample.
end;
procedure TJvChartDemoForm.MenuNegValueTestClick(Sender: TObject);
begin
FNegValueFlag := MenuNegValueTest.Checked;
NewValues;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -