Delphi Programming / Object Pascal
[掲載 2004年12月31日] [更新 2013年11月05日] Delphi サンプルプログラム集 |
拙作のコンポーネント類を使用したサンプル
T190_TChart を印刷プレビュー |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE Pro
以下の拙作のコンポーネント類が必要
TplSetPrinter, TplPrev |
|
T190_TChartPrev.zip [1,048 KB] 2013年11月05日版 (EXE 同梱) |
- 2013年11月05日
- Windows 7 U64(SP1) + Delphi XE Proで動作確認
|
円グラフや棒グラフは,自力で Canvas に描画するよりも,Delphi に附属の TChart というクラス名のコンポーネントを使用すると便利です.TChart の製品名は TeeChart です.
このサンプルプログラムでは,この TChart を利用して円グラフを描画します.TChart の体裁は全て TChart 本体のプロパティ,あるいはプロパティダイアログで設定し,プレビューの時はデータを設定するだけにしています.
テストして気づいたのですが,プロパティエディタの [系列] [形式] の正円をチェックしても微妙に楕円になってしまうようです.正円のチェックを外して,CustomXRadius と CustomYRadius の値を同じにすると正円になるようです.
Delphi 付属の TChart はサブセット版です.ソースコードは付いていません.製品版は,発売元の steema(support またはニュートンで購入できます. |
|
図1
メインフォーム (設計時)
|
|
図2
TChart を配置したフォーム
- これは設計時の画面
- フォームを新規作成して TChart を配置
- プロパティエディタ等で編集
|
|
図3
実行画面
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, plPrev, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
plPrev1: TplPrev;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
uses ChartUnit;
{$R *.DFM}
//=============================================================================
// プレビュー開始
// TChartのメタファイルを作成しそのメタファイルをTplPrevのCanvaにStretchDraw
// する.縦横比は作成したTChartのメタファイルのものと同じとする.
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
AMeta : TMetafile;
R : TRect;
ALeft : Integer;
ATop : Integer;
AWidth : Integer;
AHeight : Integer;
begin
//データをクリアしてからセット
ChartForm.PieSeries1.Clear;
ChartForm.PieSeries1.Add(1231, '東京都', clRed);
ChartForm.PieSeries1.Add( 881, '大阪府', clAqua);
ChartForm.PieSeries1.Add( 869, '神奈川県', $00FFC184);
ChartForm.PieSeries1.Add( 716, '愛知県', clYellow);
ChartForm.PieSeries1.Add( 703, '埼玉県', clLime);
ChartForm.PieSeries1.Add(8362, 'その他', clWhite);
//Pie(円)のサイズを調整
ChartForm.PieSeries1.CustomXRadius := 150;
ChartForm.PieSeries1.CustomYRadius := 130;
plPrev1.BeginDoc;
try
AMeta:= ChartForm.Chart1.TeeCreateMetafile(True, ChartForm.Chart1.ClientRect);
try
ALeft := 200;
ATop := 300;
AWidth := 1700;
AHeight := Trunc(AMeta.Height / AMeta.Width*AWidth);
R := Rect(ALeft, ATop, ALeft + AWidth, ATop + AHeight);
plPrev1.StretchDrawMetaFile(R, AMeta);
//枠線
plPrev1.Canvas.Rectangle(R);
finally
FreeAndNil(AMeta);
end;
finally
plPrev1.EndDoc;
end;
plPrev1.ShowModal;
end;
end.
リスト2
TChart を配置したフォームのコード
全てプロパティまたはプロパティダイアログで設定しているので追加コードはない |
unit ChartUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart;
type
TChartForm = class(TForm)
Chart1: TChart;
PieSeries1: TPieSeries;
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
ChartForm: TChartForm;
implementation
{$R *.DFM}
end.
|