TChart のプログラムでの Scroll









StringGrid の 6 と8 列目の行の値をChartで

グラフ化し(リボン) 常に横軸20の最新だけを表示

(注-->実際 21見えてしまいますので修正が必要)



実行時 動的に横軸が21を超えたら

(cunはカウント数=行数です)



      if cun>=21 then

          Pscroll(cun,StringGrid1,Chart1);



でグラフ表示範囲を修正出来ます

プロシージャ Pscroll を作っておきます

(scun は cun のTEMPとして活用)



関数 MinIntValue()とMaxIntValue() の為に

uses に Math を追加 



procedure TForm1.Pscroll(var scun: Integer; StringGrid1: TStringGrid;

                      Chart1:TChart);

var

     Array1: array of Integer;

   vpmax,vpmin : Integer;

begin

    //チャートのポイントの値の 配列を作成する

    SetLength (Array1, 42);



          Array1[0] := StrToInt(StringGrid1.Cells[6,scun]);

          Array1[1] := StrToInt(StringGrid1.Cells[6,scun-1]);

 	  Array1[2] := StrToInt(StringGrid1.Cells[6,scun-2]);

  	  Array1[3] := StrToInt(StringGrid1.Cells[6,scun-3]);

  	  Array1[4] := StrToInt(StringGrid1.Cells[6,scun-4]);

  	  Array1[5] := StrToInt(StringGrid1.Cells[6,scun-5]);

 	  Array1[6] := StrToInt(StringGrid1.Cells[6,scun-6]);

 	  Array1[7] := StrToInt(StringGrid1.Cells[6,scun-7]);

 	  Array1[8] := StrToInt(StringGrid1.Cells[6,scun-8]);

 	  Array1[9] := StrToInt(StringGrid1.Cells[6,scun-9]);

 	  Array1[10] := StrToInt(StringGrid1.Cells[6,scun-10]);

 	  Array1[11] := StrToInt(StringGrid1.Cells[6,scun-11]);

 	  Array1[12] := StrToInt(StringGrid1.Cells[6,scun-12]);

 	  Array1[13] := StrToInt(StringGrid1.Cells[6,scun-13]);

 	  Array1[14] := StrToInt(StringGrid1.Cells[6,scun-14]);

 	  Array1[15] := StrToInt(StringGrid1.Cells[6,scun-15]);

 	  Array1[16] := StrToInt(StringGrid1.Cells[6,scun-16]);

 	  Array1[17] := StrToInt(StringGrid1.Cells[6,scun-17]);

   	  Array1[18] := StrToInt(StringGrid1.Cells[6,scun-18]);

   	  Array1[19] := StrToInt(StringGrid1.Cells[6,scun-19]);

          Array1[20] := StrToInt(StringGrid1.Cells[6,scun-20]);

          Array1[21] := StrToInt(StringGrid1.Cells[8,scun]);

          Array1[22] := StrToInt(StringGrid1.Cells[8,scun-1]);

 	  Array1[23] := StrToInt(StringGrid1.Cells[8,scun-2]);

  	  Array1[24] := StrToInt(StringGrid1.Cells[8,scun-3]);

  	  Array1[25] := StrToInt(StringGrid1.Cells[8,scun-4]);

  	  Array1[26] := StrToInt(StringGrid1.Cells[8,scun-5]);

 	  Array1[27] := StrToInt(StringGrid1.Cells[8,scun-6]);

 	  Array1[28] := StrToInt(StringGrid1.Cells[8,scun-7]);

 	  Array1[29] := StrToInt(StringGrid1.Cells[8,scun-8]);

 	  Array1[30] := StrToInt(StringGrid1.Cells[8,scun-9]);

 	  Array1[31] := StrToInt(StringGrid1.Cells[8,scun-10]);

 	  Array1[32] := StrToInt(StringGrid1.Cells[8,scun-11]);

 	  Array1[33] := StrToInt(StringGrid1.Cells[8,scun-12]);

 	  Array1[34] := StrToInt(StringGrid1.Cells[8,scun-13]);

 	  Array1[35] := StrToInt(StringGrid1.Cells[8,scun-14]);

 	  Array1[36] := StrToInt(StringGrid1.Cells[8,scun-15]);

 	  Array1[37] := StrToInt(StringGrid1.Cells[8,scun-16]);

 	  Array1[38] := StrToInt(StringGrid1.Cells[8,scun-17]);

   	  Array1[39] := StrToInt(StringGrid1.Cells[8,scun-18]);

   	  Array1[40] := StrToInt(StringGrid1.Cells[8,scun-19]);

   	  Array1[41] := StrToInt(StringGrid1.Cells[8,scun-20]);



      //グラフ縦軸

 	  vpmax := MaxIntValue(array1);//最大値

  	  vpmin := MinIntValue(array1);//最小値

            Chart1.Series[0].GetVertAxis.Automatic := False;

            Chart1.Series[1].GetVertAxis.Automatic := False;

            Chart1.Series[0].GetVertAxis.Maximum := vpmax;

            Chart1.Series[1].GetVertAxis.Minimum := vpmin;



      //グラフ横軸

            Chart1.Series[0].GetHorizAxis.Automatic := False;

            Chart1.Series[1].GetHorizAxis.Automatic := False;

            Chart1.Series[0].GetHorizAxis.Maximum := scun;

            Chart1.Series[1].GetHorizAxis.Minimum := scun-20;

    

end;










Back