使用TPrinter印的內容有沒有辦法預覽? |
尚未結案
|
wyvern
一般會員 發表:19 回覆:31 積分:15 註冊:2003-06-18 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi wyvern, 在 QuickReport 上放個 QRImage 然後,在該 QRImage1 畫上你要的東西,再進行 QuickRep1.Preview
procedure TForm1.Button1Click(Sender: TObject); begin QRImage1.Canvas.TextOut(10,10,'You are wrong !!'); QRImage1.Canvas.LineTo(400,300); QuickRep1.Preview; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
wyvern
一般會員 發表:19 回覆:31 積分:15 註冊:2003-06-18 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi wyvern, 於 QuickReport 的 OnNeedData 事件加入程式碼,在無 DataSet 狀況下自行控制列印頁數 你可你看一下 QuickReport 的範例程式,路徑如下(視安裝路徑請自行更改)
C:\Program Files\Borland\Delphi7\Demos\Quickrpt\Qr3\qr3demo.dpr
內的 OnNeedData Example ----------------------------------
小弟才疏學淺,若有謬誤尚請不吝指教
----------------------------------
------
Fishman |
wyvern
一般會員 發表:19 回覆:31 積分:15 註冊:2003-06-18 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi wyvern, 該範例程式程式碼如下
{ ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: QuickReport 3.0 for Delphi 3.0/4.0/5.0 :: :: :: :: Demo report that is populated by the OnNeedData event :: :: :: :: Copyright (c) 1995-1999 QuSoft AS :: :: All Rights Reserved :: :: :: :: web: http://www.qusoft.com fax: 47 22 41 74 91 :: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: } unit needdata; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, QuickRpt, Qrctrls; type TfrmNeedData = class(TForm) QuickRep1: TQuickRep; DetailBand1: TQRBand; QRLabel1: TQRLabel; TitleBand1: TQRBand; QRSysData1: TQRSysData; procedure FormCreate(Sender: TObject); procedure QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); procedure QuickRep1NeedData(Sender: TObject; var MoreData: Boolean); private { Private declarations } SomeList: TStringlist; CurrentIndex: integer; public { Public declarations } end; var frmNeedData: TfrmNeedData; implementation {$R *.dfm} procedure TfrmNeedData.FormCreate(Sender: TObject); var i: integer; begin SomeList := TStringlist.Create; for i := 0 to 500 do SomeList.Add('Line ' IntToStr(i)); end; procedure TfrmNeedData.QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin // You must reset your data in the BeforePrint event // or when you print from the preview, the report will // start with the last value(s) CurrentIndex := 0; end; procedure TfrmNeedData.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean); begin // If MoreData is true, then QuickReport will print // another detail band. When you set it to false, // the report is done. MoreData := (CurrentIndex < SomeList.Count); if MoreData then begin QRLabel1.Caption := SomeList[CurrentIndex]; // Here's how to set the progress bar QuickRep1.QRPrinter.Progress := (Longint(CurrentIndex) * 100) div SomeList.Count; end else QuickRep1.QRPrinter.Progress := 100; Inc(CurrentIndex); end; end.你可以修改一下,將 StringList 更改為 ImageList 並將 ImageList 的內容塞給 QRImage 來達到你的需求 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
wyvern
一般會員 發表:19 回覆:31 積分:15 註冊:2003-06-18 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi wyvern,
procedure TForm1.QRBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin Inc(CurrPage); QRImage1.Picture := NIL; ImageList1.GetBitmap(CurrPage - 1,QRImage1.Picture.Bitmap); end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
|
wyvern
一般會員 發表:19 回覆:31 積分:15 註冊:2003-06-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |