5,390
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, DB, TeeData,
DBChart, StdCtrls;
type
TForm1 = class(TForm)
tmr1: TTimer;
Chart1: TChart;
btn2: TButton;
Series1: TFastLineSeries;
Series2: TFastLineSeries;
procedure FormCreate(Sender: TObject);
procedure tmr1Timer(Sender: TObject);
procedure Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
I, Y,A: Integer;
TempData,PData:Double;
XStr: Array[0..60] Of AnsiString;
Str: AnsiString;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin //定义LeftAxis范围
chart1.LeftAxis.Automatic:=False;
chart1.LeftAxis.Minimum:=-100;
chart1.LeftAxis.Maximum:=300;
end;
procedure TForm1.tmr1Timer(Sender: TObject);
Begin
//----------------------------------------------------曲线数据
TempData:=Random*132;
PData:=Random*200;
Chart1.Series[0].AddXY(I, TempData, TimeToStr(Time));
Chart1.Series[1].AddXY(I, PData, TimeToStr(Time));
//----------------------------------------------------BottomAxis使用时间显示
If I < 60 Then
XStr[I] := TimeToStr(Time)
Else
Begin
XStr[I Mod 60] := TimeToStr(Time);
Inc(Y);
Chart1.BottomAxis.SetMinMax(Y, Y + 59);
End;
Inc(I);
end;
//----------------------------------------------------
procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
Var
TmpX, TmpY: Double;
T: Integer;
Begin
Chart1.Repaint();
Chart1.Canvas.TextOut(X + 20, Y + 20, '');
Chart1.Canvas.TextOut(X + 15, Y - 20, Str);
Chart1.Series[1].GetCursorValues(TmpX, TmpY);
A := Trunc(TmpX);
T := A Mod 60;
If (T < 0) Or (T > 60) Then exit;
Str := Format('时间: %s 数值: %s', [XStr[T], FormatFloat('0.00', TmpY)]);
end;
end.
procedure TForm1.Timer1Timer(Sender: TObject);
var
p:TPoint;
s:string;
begin
GetCursorPos(p);
p := Chart1.ScreenToClient(p);
s := FormatFloat('0.00',Chart1.SeriesList[0].XScreenToValue(p.X))+':'+FormatFloat('0.00',Chart1.SeriesList[0].YScreenToValue(p.Y));
Chart1.Canvas.TextOut(p.X,p.Y,s);
end;
procedure TFrmMain.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
TmpX, TmpY: Double;
T,AZ: Integer;
Begin
Chart1.Series[1].GetCursorValues(TmpX, TmpY);
AZ := Trunc(TmpX);
T := AZ Mod 60;
If (T < 0) Or (T > 60) Then exit;
Str := Format('时间: %s 数值: %s', [XStr[T], FormatFloat('0.00', TmpY)]);
end;
procedure TFrmMain.Chart1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Chart1.Repaint();
Chart1.Canvas.TextOut(X + 20, Y + 20, '');
Chart1.Canvas.TextOut(X + 15, Y - 20, Str);
end;