⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jvchartdemofm.pas

📁 jvcl driver development envionment
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    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 + -