print 第二面時,header band 不讓它顯示? |
尚未結案
|
chyap99
一般會員 發表:20 回覆:51 積分:24 註冊:2004-03-31 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
chyap99
一般會員 發表:20 回覆:51 積分:24 註冊:2004-03-31 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi chyap99, 定義一個全域變數,CurrentPage,然後
1.QuickReport 的 Before 事件,將 CurrentPage 歸零 procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin CurrentPage := 0; end; 2.Quick Report 的 OnStartPage 事件中,累加 CurrentPage procedure TForm1.QuickRep1StartPage(Sender: TCustomQuickRep); begin Inc(CurrentPage); end; 3.在 Header Band 的 Before Print 事件,判斷是否為第一頁,來決定是否印出 Header Band procedure TForm1.QRBand1BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin IF CurrentPage > 1 THEN PrintBand := False ELSE PrintBand := True; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
chyap99
一般會員 發表:20 回覆:51 積分:24 註冊:2004-03-31 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 我試放showmessage('try'); 在Before Print 事件, 當print prieview 時都沒有showmessage 出現, 為什么不會去執行Before Print 事件呢?chyap99 你好 1.在beforPrint事件中寫的程式碼,當然不會在PreView的時候執行,它是在真正列印時觸發的。 2.在HeaderBand的BeforGenarate處理應該就可以。 3.MarginTop的屬性值,是在真正列印開始時會用到(不是預覽),用來計算報表實際輸出列表機的位置,在其餘各頁並不會再重新計算參考到MarginTop屬性值。 4.或許你可加入TitleBand設定其高度為0.15(0.25-0.1),裏面不放任何東西,只是要利用其特性來卡位而已。 發表人 - chance36 於 2004/04/26 19:15:25 |
chyap99
一般會員 發表:20 回覆:51 積分:24 註冊:2004-03-31 發送簡訊給我 |
1.在beforPrint事件中寫的程式碼,當然不會在PreView的時候執行,它是在真正列印時觸發的。
2.在HeaderBand的BeforGenarate處理應該就可以。
-------------------------------------------------------------------- 謝謝大大(Chance36 and Fishman)...
我放
Report.HeaderBand.PrintOnLastPage := False;
Report.PrinterSetup.MarginTop := 0.2;
在beforPrint,beforeGenarate,startPage等等事件當我真正列印時
都沒效!
我參考report builder 里的end user reporting demo也是一樣不知如何加入beforPrint,beforeGenarate,startPage等等事件, 因為它是先放一個空的TppReport,run時才選要什麼report(invoice,cusiomer file etc).
該怎么做呢.
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 3.MarginTop的屬性值,是在真正列印開始時會用到(不是預覽),用來計算報表實際輸出列表機的位置,在其餘各頁並不會再重新計算參考到MarginTop屬性值。 4.或許你可加入TitleBand設定其高度為0.15(0.25-0.1),裏面不放任何東西,只是要利用其特性來卡位而已。chyap99 你好 是該事件沒觸發還是有觸發了但MarginTop設定無效,另外Beforprint是ppReport.BeforPrint還是ppHeaderBand.beforPrint? 請注意引言中的第三點,第一,二點是因應你說要在Beforprint的事件中處理的建議,第三點是提示你,對於MarginTop...等屬性的設定是在ppReport.Print 列印前設定才有效,不是Beforprint(列印前)事件, 最後,如果你的需求只是要第一頁的MarginTop=0.25,在其頁則MarginTop=0.1時,建議你使用第四點的方式試試看。 引言: 我參考report builder 里的end user reporting demo也是一樣不知如何加入beforPrint,beforeGenarate,startPage等等事件, 因為它是先放一個空的TppReport,run時才選要什麼report(invoice,cusiomer file etc). 該怎么做呢. // 先建立ppHeaderBand.BeforGenerate的事件實體 procedure TForm1.ppHeaderBandBeforeGenerate(Sender: TObject); begin //你要處理的事情 end; 在選定出樣版後,把該事件掛上去 procedure TForm1.SetHeaderBandBeforeGenerate(ppReport:TppReport); Var hb:TppHeaderBand; Function GetHeadBand(ppReport:TppReport):TppHeaderBand; var i : Integer ; Begin Result := nil ; For i:= 0 To ppReport.BandCount-1 Do Begin If ppReport.Bands[i] is TppHeaderBand Then Begin Result := TppHeaderBand(ppReport.Bands[i]); End; End; End; begin hb:=GetHeadBand(ppReport);//找到HeaderBan If hb <> nil Then hb.BeforeGenerate:= ppHeaderBand1BeforeGenerate;//掛上BeforeGenerate事件 end; |
chyap99
一般會員 發表:20 回覆:51 積分:24 註冊:2004-03-31 發送簡訊給我 |
引言:
4.或許你可加入TitleBand設定其高度為0.15(0.25-0.1),裏面不放任何東西,只是要利用其特性來卡位而已。
---------------------------------------------------------------------
謝謝大大! 這真是個很聰明的方法,其實我在做Receipt,要它第二頁在沒有空位下接著Print,雖然現在還是有空位(應該是printer問題),但margin卻輕易set到了. 我都有在ppReport和ppHeaderBand嘗試BeforePrint,BeforeGenerate,OnPageStart等等.但都沒有觸發事件. 在大大的coding里我加了(注意 **) Procedure Form1.BtnPreviewClick(Sender: TObject); //preview button
Report.template.DatabaseSettings.Name :=‘Receipt Report’;
Report.template.LoadFromDatabase;
SetHeaderBandBeforeGenerate(Report); //**
Report.print; ** 才能執行到BeforeGenerate的事件,是應該這樣嗎?
程式不會自動執行BeforeGenerate,BeforePrint etc 的事件嗎?那我每次都要做一個好像procedure Form1.SetHeaderBandBeforeGenerate(ppReport:TppReport);
的procedure來乎叫BeforeGenerate etc 的事件嗎? 我有去reportbuilder的website,他給我的意見是用RAP,但我怎樣也弄不出Calc tag 來,我用ReportBuilder Pro 4 edition, 是不是用不到RAP呢?現在是用delphi 3, 不是不要升級去5以上, 但聽說有很多問題所以升級不到.現在很多東西3都用不到我又是初學者, 真慘. 希望我問的問題不會太笨.謝謝指教.
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |