StringGrid显示如下
 序号      时间(m)       压力(MPa)      温度(℃)
    1      0.00         0.000             15.2
    2      0.07         0.000             15.3
    3      0.17         0.000             15.4
    4      0.24         0.000             15.5
    5      0.33         0.000             15.6
    6      0.40         0.000             15.7
    7      0.51         0.000             15.7
    8      0.56         0.000             15.8
    9      0.68         0.000             15.9
   10      0.75         0.000             16.0
   11      0.83         0.000             16.1
   12      0.95         0.000             16.2
   13      1.02         0.000             16.3
   14      1.12         0.000             16.4
   15      1.22         0.000             16.5
   16      1.30         0.000             16.5
   17      1.36         0.000             16.6
   18      1.47         0.000             16.7
   19      1.54         0.000             16.8显示一个压力-时间-温度的图表
请问用什么控件 怎样搞??
3x!

解决方案 »

  1.   

    procedure DoPaintNHLine(nCanvas:TCanvas;P:Array of TPoint;nCount:Integer);
    Type
    TXs=Record
    A,B,C:Real;
    end;
    pXs=^AXs;
    AXs=Array[0..1000] of TXs;
    var
    TmpP:Array [0..2] of TPoint;
    A,B,C:real;
    i,J,TmpY:integer;
    JQXs:real;
    Xs:pXs;
    procedure GetXs(var a,b,c:real;P:Array of TPoint);
    var iFz,iFm:real;
    function Pf(n:integer):integer;
    begin
    Result:=n*n;
    end;
    begin
    iFz:=(P[0].Y-P[2].Y)*(P[0].X-P[1].X)-(P[0].Y-P[1].Y)*(P[0].X-P[2].X);
    iFm:=(Pf(P[0].X)-Pf(P[2].X))*(P[0].X-P[1].X)-(Pf(P[0].X)-Pf(P[1].X))*(P[0].X-P[2].X);
    a:=iFz/iFm;
    b:=((P[0].Y-P[1].Y)-(Pf(P[0].X)-Pf(P[1].X))*a)/(P[0].X-P[1].X);
    c:=P[0].Y-a*Pf(P[0].X)-b*P[0].X;
    end;
    function GetYValue(A,B,C:real;X:integer):integer;
    begin
    Result:=Round(A*X*X+B*X+C);
    end;
    begin
    For i:=0 to nCount-1 do
    nCanvas.Ellipse(p[i].X-2,P[i].Y-2,P[i].X+2,p[i].Y+2);
    GetMem(Xs,(nCount-2)*SizeOf(TXs));
    For i:=0 to nCount-1-2 do
    begin
    MoveMemory(@TmpP[0],@P[i],3*SizeOf(TPoint));
    GetXs(A,B,C,TmpP);
    Xs^[i].A:=A;Xs^[i].B:=B;Xs^[i].C:=C;
    end;nCanvas.MoveTo(P[0].X,P[0].Y);
    For i:=0 to nCount-1-1 do
    begin
    JQXs:=0;
    For J:=P[i].X to P[i+1].X do
    begin
    if (i=0) or (i=nCount-2) then
    begin
    if i=0 then
    TmpY:=GetYValue(Xs[i].A,Xs[i].B,Xs[i].C,J)
    else
    TmpY:=GetYValue(Xs[i-1].A,Xs[i-1].B,Xs[i-1].C,J)
    end
    else
    begin
    TmpY:=Round(GetYValue(Xs[i-1].A,Xs[i-1].B,Xs[i-1].C,J)*(1-JQxs)+GetYValue(Xs[i].A,Xs[i].B,Xs[i].C,J)*JQXs);
    JqXs:=JqXs+1/(P[i+1].X-P[i].X);
    end;
    nCanvas.LineTo(J,TmpY);end;
    end;
    FreeMem(Xs);
    end;
      

  2.   

    最好相互之间可以感应的
    向数据库的数据与图之间的关系!
    DBStringGrid与DBChart 的联系的那种!