Delphi Programming / Object Pascal
[掲載 2001年02月04日] [更新 2016年04月30日] Query 印刷コンポーネント |
Query 印刷コンポーネント
テストプログラム DBDemos |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE(UP1) Pro |
この後のテストプログラムでも使用している元のデータを印刷する例です.
全体で 20 頁以上ありますので,他のテストプログラムでは数頁分となるようにデータを選択しています.Delphi 付属の DBDEMOS を利用しています.
ここでは,TQuery しか使用していませが,データベース関連コントロール (コンポーネント) の設定は,通常の使用における設定と特に変りありません.本コンポーネントの Columns プロパティで印刷項目を設定し,印刷とプレビュー関係の設定をします.
- 下図のようにコンポーネント類を配置
- Query1 の DatabaseName プロパティを DBDEMOS に
- Query1 の SQL プロパティを以下のようにする
- 本コンポーネントの DataSet プロパティを Query1 とする
- 本コンポーネントをダブルクリックして Columns プロパティの印刷項目を設定する
|
SELECT T2.CustNo,
T4.Company,
T3.Description,
T1.OrderNo,
T3.ListPrice,
T3.Cost,
T1.Qty,
T1.Qty*T3.Cost as Sales
FROM "Items.db" T1,
"Orders.db" T2,
"Parts.db" T3,
"Customer.db" T4
WHERE (T2.OrderNo = T1.OrderNo) AND
(T3.PartNo = T1.PartNo) AND
(T4.CustNo = T2.CustNo)
ORDER BY T2.CustNo, T3.Description
|
図1
設計時画面 |
|
図2
印刷項目 |
|
図3
プレビュー結果
- Custom, Company の ContValuesPrint を False にして,同じ値の時は印刷しないようにしている
|
リスト2
テストプログラムのコード
各カラム幅や行高さはオブジェクトインスペクタで設定したのでこれだけ |
unit DBDemosUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, plPrev, plQueryPrev, DB, DBTables;
type
TForm1 = class(TForm)
Query1: TQuery;
plQueryPrev1: TplQueryPrev;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
uses
Printers;
{$R *.DFM}
//=============================================================================
// 結果をプレビュー
// オブジェクト・インスペクタで設定した内容でプレビュー
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
//設定ダイアログを表示して設定する場合
plQueryPrev1.plSetPrinter.ShowSetupDialog;
//ダイアログを表示しないで設定する場合
//Orientationの使用には,usesにPrintersが必要
//plQueryPrev1.plSetPrinter.Orientation := poLandscape;
//印刷プレビュー開始
plQueryPrev1.Preview;
end;
end.
|