?? quickreport實(shí)現(xiàn)多欄列印.txt
字號(hào):
在Delphi中運(yùn)用QuickReport實(shí)現(xiàn)多欄列印
---- 在所有有關(guān)Delphi的書籍中,都沒有講解如何實(shí)現(xiàn)一個(gè)打印項(xiàng)的多欄打印,而實(shí)現(xiàn)生活中往往有許多報(bào)表要求同一項(xiàng)目多欄打印,QuickReport提供了報(bào)表打印一整套完整的解決方案,完全可以實(shí)現(xiàn)同一項(xiàng)目的多欄打印,技術(shù)關(guān)鍵是如何控制表中記錄提取個(gè)數(shù),如果在Treport的DataSet屬性中選定一個(gè)Table
那么QuickReport每次打印詳細(xì)列表(BandType=rbDetail)屬性的TQRBand時(shí),系統(tǒng)會(huì)自動(dòng)取出一個(gè)記錄供打印,并將表中的記錄指針移到下一位,這樣程序無法控制表中記錄指針的移動(dòng),就無法實(shí)現(xiàn)多欄打印,只要程序不在Treport的DataSet屬性選定任何表
QuickReport便不會(huì)控制表記錄的提取,QuickReport特為其它類型數(shù)據(jù)打印提供了一個(gè)OnNeedData事件,QuickReport 每次打印詳細(xì)列表(BandType=rbDetail)屬性的TQRBand時(shí),會(huì)觸發(fā)這個(gè)事件,要求提供打印數(shù)據(jù),如果程序在OnNeedData事件中編寫運(yùn)用表中數(shù)據(jù)提供打印資料,便能實(shí)現(xiàn)多欄打印,現(xiàn)舉例說明:
---- 現(xiàn)在要實(shí)現(xiàn)一個(gè)Table1中Name項(xiàng)兩欄打印,在窗口上放TquickReport組件 quickReport1,并在上面放Tband組件band1,將其BandType屬性改為Detail,在Tband 組件上并排放兩個(gè)QRLabel組件QRLabel1和QRLabel2,在quickReport1的OnNeedData事件中寫如下代碼:
procedure TForm1.QuickRep1NeedData(Sender:
TObject; var MoreData: Boolean);
var
I: integer;
begin
MoreData := True;
for I:= 1 to 2 do begin
if Table1.Eof then Break;
case I of
1: QRLabel1.Caption := Table1.FieldByName('Name').AsString;
2: QRLabel2.Caption := Table1.FieldByName('Name').AsString;
end;
Table1.Next;
end;
if Table1.Eof then MoreData := False;
end;
---- 為了保證打印或者打印預(yù)覽開始時(shí)Table1指針在第一條記錄,在quickReport1的 BeforePrint事件中寫如下代碼:
procedure TForm1.QuickRep1BeforePrint
(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
Table1.First;
end;
---- 這樣程序調(diào)用QuickRep1.Preview或者QuickRep1.Print便能預(yù)覽或者打印到一個(gè)關(guān)于 Name的從左至右,從上到下的多欄報(bào)表。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -