Reportbuilder 補空
1. ppClass單元TppBand增加AddBlankRow 屬性,重新編譯所有包後,在Design報表的DetailBand中可以設置AddBlankRow屬性
2. ppBandEngine單元TppBandEngine.CheckForEndofGeneration
//原句 if GenerationComplete then
//原句 Result := True
改為
if GenerationComplete then
begin
if (FBand.PrintTimes = ptCount) and (FCount < FBand.PrintCount) then
Result := False
else
Result := True;
End
用途:當GenerationComplete為真時,仍然可以繼續列印
3. ppBandEngine單元TppBandEngine.ProcessQueue
//原句 while (liComponent < aQueue.Count) and not(GenerationComplete)do
//改為
if GenerationComplete and FBand.AddBlankRow then
if FBand.GetADataPipeline.Eof then
begin
FBand.GetADataPipeline.skip;
end;
//經證實此段無效, FBand.GetADataPipeline.Skip只能到Eof,也就是最後一條記錄,不能跳過最後一條記錄
while (liComponent < aQueue.Count) and (not(GenerationComplete) or FBand.AddBlankRow)do
用途:當GenerationComplete為真時,判斷是否要補充空行,如果AddBlankRow為真則繼續列印
4. ppCtrls單元
因為FBand.GetADataPipeline無法創造一個空記錄,當FBand.GetADataPipeline為Eof時,實際指向最後一條記錄,只好直接在每個控件輸出時,控制表格元件的內容
TppCustomText.PropertiesToDrawCommand
TppCustomText一般為
- TppDBCalc
- TppDBText
- TppLabel
- TppSystemVariable
- TppVariable
//xxx
{ if (Parent is TppBand) and TppCustomBand(Parent).GenerationComplete and TppCustomBand(Parent).AddBlankRow then
lDrawText.Text := ''
else
lDrawText.Text := Text;}
lDrawText.Text := Text;
//原具
//xxx
TppDBImage.LoadPicture
控制圖片輸出
//xxx
if (Parent is TppBand) and TppCustomBand(Parent).GenerationComplete and TppCustomBand(Parent).AddBlankRow then
exit;
barcode等尚未研究
此種方法在對於包不太熟的朋友不建議使用,用臨時表方案比較好
不懂怎麼樣結貼