お知らせ

電子会議

ライブラリ

FDelphi サイト全文検索

Delphi FAQ一覧

サンプル蔵



FDelphi FAQ
15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」

[Q]
 Delphiにはグラフを描くためのメカニズムが見あたりませんが どうすればグラフを表示できますか?

[A]
・ChartFXなどのOCXを使うと複雑なグラフを簡単に書けますが、OCXなので
 再配布が面倒だったりします。

・TPaintBoxを張り付けて、このOnPaintイベントでPaintBoxのCanvasに
 描画します。OnPaintイベントは
  「描画が必要になったら」
 呼び出されるイベントですから、描画をするためのタイミングとしては
 ここがベストです。
 データはあらかじめ配列などに準備しておいて、いつでも描画できる
 ように待ちかまえていなければなりません。(=イベントドリブン)
 データが更新されたりして積極的に書き直しをしたければ、PaintBox
 のInvalidateメソッドを呼べば、OnPaintが自動的に呼ばれます。
 なお、座標系はピクセル単位しかありませんので、換算は自分でやります。
[例]
 Formにペイントボックスとボタンをはりつけます。
ボタンをおすとグラフが書き変わります。

type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Button1: TButton;
    procedure PaintBox1Paint(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;
  ArrY: array [1..10] of integer =
    (10,20,30,40,50,60,70,80,90,100 );

implementation

{$R *.DFM}

procedure TForm1.PaintBox1Paint(Sender: TObject);
var i, X, Y: integer;
begin
  with PaintBox1.Canvas do begin
    Brush.Color := clWhite;
    Rectangle(10,10,120,120);
    Brush.Color := clBlue;
    for i := 1 to 10 do begin
      X := 10 + i * 10;
      Y := 120 - ArrY[i];
      Rectangle(X, 120, X+7, Y);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  inc(ArrY[5], 5);
  PaintBox1.Invalidate;
end;

end.


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。

Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会