📄 jvchartdemofm.pas
字号:
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 PrintDialog1.Execute then
Chart.PrintGraph;
end;
procedure TJvChartDemoForm.Generatenewrandomvalues1Click(Sender: TObject);
begin
if SpeedButtonTestMouseOver.Down then exit;
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', MB_OK);
end;
procedure TJvChartDemoForm.AboutJVCL301Click(Sender: TObject);
begin
TJvJVCLAboutForm.Execute(False);
end;
procedure TJvChartDemoForm.Scrolling1Click(Sender: TObject);
begin
if SpeedButtonTestMouseOver.Down then exit;
Scrolling1.Checked := not Scrolling1.Checked;
Timer1.Enabled := Scrolling1.Checked;
end;
procedure TJvChartDemoForm.Timer1Timer(Sender: TObject);
begin
if SpeedButtonTestMouseOver.Down then exit;
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
if SpeedButtonTestMouseOver.Down then exit;
LargeDataset576samples1.Checked := not LargeDataset576samples1.Checked;
NewValues;
end;
procedure TJvChartDemoForm.DateTimeAxisModeClick(Sender: TObject);
begin
DateTimeAxisMode.Checked := not DateTimeAxisMode.Checked;
if SpeedButtonTestMouseOver.Down then begin
Chart.Options.XLegends.Clear;
end else
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;
{ Simple Chart Tests for finding bug }
procedure TJvChartDemoForm.SpeedButtonTestMouseOverClick(Sender: TObject);
var
i:Integer;
n:Double;
marker1,marker2,draggableCursor:TJvChartFloatingMarker;
begin
ListBox1.Clear;
Scrolling1.Checked := false;
Chart.Options.Title := 'Click on the Red Diamonds or the vertical gray line and Drag them!';
Chart.Options.ChartKind := ckChartLine;
Chart.Options.XLegends.Clear;
Chart.Options.XAxisHeader := '';
Chart.Options.MouseDragObjects := true; // NEW: MOUSE DRAG FLOATING OBJECTS!
for i := 0 to Chart.Options.PenCount - 1 do
begin
Chart.Options.PenMarkerKind[I] := pmkNone;
end;
Chart.Data.Clear;
Chart.Options.XValueCount := 80;
Chart.Data.ValueCount := 6;
Chart.Options.PenCount := 1;
for i := 0 to Chart.Options.XValueCount-1 do begin
n := 30-(25*((1-((i-25)/15))*(1-((i-25)/15))));
if n<5 then
n := 5 -(Sqrt((Abs(n))/15));
ListBox1.Items.Add( FloatToStrF(n,ffFixed,6,4));
Chart.Data.Value[0,i] := n;
end;
Chart.Options.PrimaryYAxis.YMax := 50;
Chart.Options.PenStyle[0] := psSolid;
// NEW: Add a floating marker:
marker1 := Chart.AddFloatingMarker;
marker1.XPosition := 13;
marker1.YPosition := Chart.Data.Value[0,marker1.XPosition]; // Snap to Pen 1
marker1.XDraggable := true; // make it mouse-moveable.
marker1.YDraggable := true;
marker1.Caption :='Start';
marker1.Visible := true;
marker2 := Chart.AddFloatingMarker;
marker2.XPosition := 66;
marker2.YPosition := Chart.Data.Value[0,marker2.XPosition]; // Snap to Pen 1
marker2.LineToMarker := marker1.index; // Connect with a line to marker1
marker2.XDraggable := true; // make it mouse-moveable.
marker2.YDraggable := true;
marker2.Caption := 'End';
marker2.Visible := true;
// NOTE: Do not Free marker1 or marker2.
// Marker objects are freed automatically
// by the Chart.
// a draggable cursor object:
draggableCursor := Chart.AddFloatingMarker;
draggableCursor.LineVertical := true; // Make a vertical Line
draggableCursor.Marker := pmkNone; // No marker. So it is a line only.
draggableCursor.XDraggable := true; // make it draggable.
draggableCursor.XPosition := 40;
draggableCursor.LineColor := clDkGray;
draggableCursor.LineStyle := psSolid;
draggableCursor.LineWidth := 2;
draggableCursor.Caption := FloatToStrF( Chart.Data.Value[0,draggableCursor.XPosition], ffFixed, 6,4 );
draggableCursor.Visible := true;
Chart.PlotGraph;
end;
procedure TJvChartDemoForm.ChartEndFloatingMarkerDrag(Sender: TJvChart;
FloatingMarker: TJvChartFloatingMarker);
begin
// Snap to line:
if (FloatingMarker.Index<2) then // One of the first two markers?
FloatingMarker.YPosition := Chart.Data.Value[0, FloatingMarker.XPosition]
else // update caption
FloatingMarker.Caption := FloatToStrF( Chart.Data.Value[0,FloatingMarker.XPosition],ffFixed,6,4 );
end;
procedure TJvChartDemoForm.ChartBeginFloatingMarkerDrag(Sender: TJvChart;
FloatingMarker: TJvChartFloatingMarker);
begin
if FloatingMarker.Index=2 then
FloatingMarker.Caption := '?';
end;
procedure TJvChartDemoForm.ChartChartPaint(Sender: TJvChart;
aCanvas: TCanvas);
begin
aCanvas.Pen.Color := clRed;
aCanvas.Pen.Style := psSolid;
aCanvas.MoveTo(0,0);
aCanvas.LineTo(100,100);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -