D6Pro、XPProSP3、付属のquickreportです
フォームにQuickRepを貼り付けた後、Detailbandを作成したり、QRLabelを作成したりは、出来きたのですが、QuickRepそのものを実行時に作成する方法があるのでしょうか?
また、QuickRepのPage.OrientationとPage.PaperSIzeプロパティをプログラム上変更するにはどうすれば良いのでしょうか?
以上2点、よろしくお願いします
> QuickRepそのものを実行時に作成する方法があるのでしょうか?
QRLabelとかと同じ
フォーム上の見えない位置にでも貼りつけてやればいいんじゃない?
所詮、TWinControlから派生したコントロールだし、特別なことは不要かと。
> QuickRepのPage.OrientationとPage.PaperSIzeプロパティ〜
そのまんま、QuickRep.Page.Orientation := poPortrait;
QuickRep.Page.PaperSIze := A3;
これ、できなかったの?
>そのまんま、QuickRep.Page.Orientation := poPortrait;
未定義の識別子'PoPortRait'と表示されます
use節にQRPrntrを追加するとコンパイルが通ります
>QuickRep.Page.PaperSIze := A3;
未定義の識別子'PoPortRait'と表示されます
use節にPrintersを追加するとコンパイルが通ります
現在の試験的なコードは以下の通りです
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,QuickRpt, QRCtrls;
type
TFrmTest = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private 宣言 }
Report : TQuickRep;
Detail : TQRBand;
// QLblName : TQRLabel;
public
{ Public 宣言 }
end;
var
FrmTest: TFrmTest;
implementation
{$R *.dfm}
procedure TFrmTest.FormCreate(Sender: TObject);
begin
Report := TQuickRep.Create(FrmTest);
with Report do begin
Parent := FrmTest;
Page.PaperSize := A4;;//ここでエラー
Page.Orientation := poLandScape;//ここでエラー
Page.LeftMargin := 10;
page.TopMargin := 10;
Page.RightMargin := 10;
Page.BottomMargin := 10;
Top := 0;
Left := 0;
end;
Detail := TQRBand.Create(FrmTest);
with Detail do begin
Parent := FrmTest.Report;
Size.Height := Report.Height-Report.Page.TopMargin-Report.Page.BottomMargin;
Size.Width := Report.Width - Report.Page.LeftMargin-Report.Page.RightMargin;
end;
Report.PreviewModal;
end;
procedure TFrmTest.FormDestroy(Sender: TObject);
begin
Detail.Free;
Report.Free;
end;
前後しましたが???さんレスありがとうござした
> Report := TQuickRep.Create(FrmTest);
FrmTestなどという変数使わず、Selfで十分
> Detail := TQRBand.Create(FrmTest);
Detail := Report.CreateBand(rbDetail)
とか、
Report.Bands.HasDetail := True;
Detail := Report.BandList.Items[0];
とかでも、できないかな?
めんどくさいから、ひな形の一つもつくって、そこからコントロールの
増減ぐらいだけ、コードで書いた方がいいような気もするけど・・・。
ofZさんレス有難うございます
>めんどくさいから、ひな形の一つもつくって、そこからコントロールの
増減ぐらいだけ、コードで書いた方がいいような気もするけど・・・。
やっぱり、この方法が一番早いのでしょうか??
> やっぱり、この方法が一番早いのでしょうか??
どんな帳票にしたいかにもよるけど、
1)文字サイズ固定でいい
2)一行一レコードである
であるならば、TQRMemoを大きく貼り付けして、整形した行データを一括で
流し込むだけで済むので、コントロールの増減すら不要になりますよね。
TQREdit一個で、一行分のデータを、OnNeedDataで整形出力してもいいでしょう。
直接の回答ではありませんが、ソースの可読性に問題がないのであれば
(帳票数が少ない等、条件分岐が少ないとか)、全部コードで記述しても
いいと思います。
自分は、レイアウトをイメージながら作れないので、できるかぎり
フォームに貼り付けして使います。
ofZさんありがとうございます
動的な作成を試みたのですが、ofZさんの指摘の方法でやります
とりあえず、本件に関しては、解決とします
ただ、疑問に残るのは、QRPrntr,PrinterをUse節に入れないと、orientationプロパティーやPaperSizeプロパティーを変更できない点です。この点については、私なりに調査して、理解できたら報告します
ツイート | ![]() |