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; |