在delphi中怎么按照一定的时间间隔动态的画出数据变化曲线?用控件怎么实现呀?如果控件实现不了,自己画吗?求高手指教

解决方案 »

  1.   

    顶顶帖子高手们
    也请多多赐教
    http://topic.csdn.net/u/20110913/13/59f92d11-1fb0-4b7e-9c4a-e93d8f19c689.html
    http://topic.csdn.net/u/20110611/12/3258c959-4f28-46b7-b5d6-46135d73036b.html
    http://topic.csdn.net/u/20110722/14/89f7440b-c4d7-4c9a-a4bb-a503f5135db2.html
    http://topic.csdn.net/u/20110729/10/a7bfaf06-0cf9-4580-8e91-d4e0b92066c6.html
    http://topic.csdn.net/u/20110811/16/e56e7cc1-d8c9-40af-92e3-c24ca103d17d.html
    http://topic.csdn.net/u/20110830/13/dfae4ca5-d2b9-4889-8a3c-6f7fb61936c9.html
    http://topic.csdn.net/u/20110905/12/a1161adb-8e5d-491a-b302-c9722edf2dab.html
    http://topic.csdn.net/u/20110913/16/2dbcc9db-8f71-40c5-901f-afae9026f7c2.html
    http://topic.csdn.net/u/20110913/13/59f92d11-1fb0-4b7e-9c4a-e93d8f19c689.html
      

  2.   

    就是用Chart画曲线嘛,取X轴为时间间隔吧?
      

  3.   

    TChart可以满足你的要求,你间隔发数据,这边就负责绘制图形就可以了
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, TeEngine, Series, TeeProcs, Chart;type
      TForm1 = class(TForm)
        Chart1: TChart;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        procedure TimerTimer(Sender: TObject);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationvar Series1:TFastLineSeries;
        Timer:TTimer;{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      Chart1.AxisVisible:=false;
      Chart1.View3DWalls:=false;
      Chart1.Title.Visible:=false;
      Chart1.Legend.Visible:=false;
      Series1:=TFastLineSeries.Create(Chart1);
      Series1.SeriesColor:=clBlue;
      Series1.ParentChart:=Chart1;
      Series1.FillSampleValues(100);
      Timer:=TTimer.Create(self);
      Timer.Interval:=200; //时间间隔
      Timer.OnTimer:=TimerTimer;
    end;procedure TForm1.TimerTimer(Sender: TObject);
    var tmpX:Double;
        inputvalue:integer;
    begin
      inputvalue:=Random(100);//用你的数据代替这个随机数
      With Series1 do
      begin
        tmpX:=XValues[1]-XValues[0];
        Delete(0);
        AddXY(XValues.Last+tmpX,inputvalue,'',clTeeColor);
      end;
    end;end.
      

  5.   

    把定时器的代码全部搬去你再添加的按钮的点击事件里、注释了定时器建立的代码即可,如下:procedure TForm1.FormCreate(Sender: TObject);
    begin
      Chart1.AxisVisible:=false;
      Chart1.View3DWalls:=false;
      Chart1.Title.Visible:=false;
      Chart1.Legend.Visible:=false;
      Series1:=TFastLineSeries.Create(Chart1);
      Series1.SeriesColor:=clBlue;
      Series1.ParentChart:=Chart1;
      Series1.FillSampleValues(100);
    //  Timer:=TTimer.Create(self);
    //  Timer.Interval:=200; //时间间隔
    //  Timer.OnTimer:=TimerTimer;
    end;//procedure TForm1.TimerTimer(Sender: TObject);
    //begin
    //end;procedure TForm1.Button1Click(Sender: TObject);//这里是你新添加的按钮的点击事件
    var tmpX:Double;
        inputvalue:integer;
    begin
      inputvalue:=Random(100);//用你的数据代替这个随机数
      With Series1 do
      begin
        tmpX:=XValues[1]-XValues[0];
        Delete(0);
        AddXY(XValues.Last+tmpX,inputvalue,'',clTeeColor);
      end;
    end;
      

  6.   


    ......
    type
      TForm1 = class(TForm)
        Chart1: TChart;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
    //    procedure TimerTimer(Sender: TObject);
      public
        { Public declarations }
      end;
    ......
      

  7.   

    有个工控用的控件也行,TVrScope,TMS Instrumentation Workshop 套装里的一个 ,漂亮点
      

  8.   

    //新建一个工程、双击工程里的窗体、复制下列代码、覆盖你工程中的unit1的所有内容、编译后运行:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, TeEngine, Series, TeeProcs, Chart, StdCtrls, Spin;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        procedure ButtonClick(Sender: TObject);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementationvar Series1:TFastLineSeries;
        Chart1:TChart;
        Panel:TPanel;
        Button:TButton;
        SpinEdit:TSpinEdit;
        Lab:TLabel;
    {$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      Height:=380;
      Width:=504;
      Position:=poScreenCenter;
      Panel:=TPanel.Create(self);
      Panel.Parent:=form1;
      Panel.Align:=alBottom;
      Lab:=TLabel.Create(self);
      Lab.Parent:=Panel;
      Lab.Left:=5;
      Lab.Top:=12;
      Lab.Caption:='数据:';
      SpinEdit:=TSpinEdit.Create(self);
      SpinEdit.Parent:=Panel;
      SpinEdit.Left:=50;
      SpinEdit.Top:=9;
      Button:=TButton.Create(self);
      Button.Parent:=Panel;
      Button.Left:=184;
      Button.Top:=9;
      Button.Caption:='输入数据';
      Button.OnClick:=ButtonClick;
      Chart1:=TChart.Create(self);
      Chart1.Parent:=form1;
      Chart1.Align:=alClient;
      Chart1.AxisVisible:=false;
      Chart1.View3DWalls:=false;
      Chart1.Title.Visible:=false;
      Chart1.Legend.Visible:=false;
      Series1:=TFastLineSeries.Create(Chart1);
      Series1.SeriesColor:=clBlue;
      Series1.ParentChart:=Chart1;
      Series1.FillSampleValues(100);
      SpinEdit.Value:=Random(500);
    end;procedure TForm1.ButtonClick(Sender: TObject);
    var tmpX:Double;
    begin
      With Series1 do
      begin
        tmpX:=XValues[1]-XValues[0];
        Delete(0);
        AddXY(XValues.Last+tmpX,SpinEdit.Value,'',clTeeColor);
      end;
      SpinEdit.Value:=Random(500);
    end;end.