var
_lastRecNo: Integer = 0; //记录最近一条记录在MasterData中的记录号
LastCol: Integer = 19; //最后一行的序号(该值固定 )
HasVal: array[0..13] of Integer; //存储存储每个尺码是否有值的数组
Idx: Integer;
PageLine: integer; //记录当前打印到第几行
PageMaxRow: integer = 10; //设定每页行数
procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
var
I:Integer;
begin
if not Engine.FinalPass then
begin
if (<SaleOrderLine."XXS"> > 0) then HasVal[0] := 1;
if (<SaleOrderLine."XS"> > 0) then HasVal[1] := 1;
if (<SaleOrderLine."S"> > 0) then HasVal[2] := 1;
if (<SaleOrderLine."M"> > 0) then HasVal[3] := 1;
if (<SaleOrderLine."L"> > 0) then HasVal[4] := 1;
if (<SaleOrderLine."XL"> > 0) then HasVal[5] := 1;
if (<SaleOrderLine."XXL"> > 0) then HasVal[6] := 1;
if (<SaleOrderLine."3SXL"> > 0) then HasVal[7] := 1;
if (<SaleOrderLine."4SXL"> > 0) then HasVal[8] := 1;
if (<SaleOrderLine."5SXL"> > 0) then HasVal[9] := 1;
if (<SaleOrderLine."6SXL"> > 0) then HasVal[10] := 1;
if (<SaleOrderLine."7SXL"> > 0) then HasVal[11] := 1;
if (<SaleOrderLine."8SXL"> > 0) then HasVal[12] := 1;
end;
PageLine := <line> mod PageMaxRow;
if (PageLine = 1) and (<line> > 1) then
Engine.newpage;
end;
procedure Page1OnBeforePrint(Sender: TfrxComponent);
var
I, J: Integer;
mem1, mem2, mem3, mem4, mem5, mem6: TfrxMemoView;
begin
if Engine.FinalPass then
begin
for I:=12 downto 0 do
begin
//如果当前尺码都无值,则隐藏该尺码表头和内容框
if HasVal[I]<>1 then
begin
mem1 := TfrxMemoView(Report.FindObject('Memo_'+IntToStr(I+1)));
mem1.Visible := False;
mem3 := TfrxMemoView(Report.FindObject('Val_'+IntToStr(I+1)));
mem3.Visible := False;
mem5 := TfrxMemoView(Report.FindObject('Val_c_'+IntToStr(I+1)));
mem5.Visible := False;
for J:=I to LastCol-1 do
begin
mem2 := TfrxMemoView(Report.FindObject('Memo_'+IntToStr(J+1)));
if mem2.Visible=True then
mem2.Left := mem2.Left - mem1.width;
mem4 := TfrxMemoView(Report.FindObject('Val_'+IntToStr(J+1)));
if mem4.Visible=True then
mem4.Left := mem4.Left - mem3.width;
mem6 := TfrxMemoView(Report.FindObject('Val_c_'+IntToStr(J+1)));
if mem6.Visible=True then
mem6.Left := mem6.Left - mem5.width;
end;
end;
end;
end;
end;
procedure PageHeader1OnAfterPrint(Sender: TfrxComponent);
begin
try
if(<Page> <= 1) then MasterData1.DataSet.First(); //刚开始时游标可能不在第一条记录,需要重置一下\
//当最近一条记录号与当前MasterData中的记录号相同时,表示同一条记录自动分页
//然后就强制显示MasterData1
if (<Page> > 1) and (_lastRecNo = MasterData1.DataSet.RecNo) then Engine.ShowBand(MasterData1);
_lastRecNo := MasterData1.DataSet.RecNo; //记录一下最近一条记录的记录号
except
//showmessage('Error!')
end;
end;
procedure Footer1OnBeforePrint(Sender: TfrxComponent);
var
i: integer;
begin
i := iif(PageLine=0, PageMaxRow, PageLine);
while i < PageMaxRow do begin
i := i + 1;
Engine.ShowBand(Child1); //打印空白表格(行)
end;
end;
begin
//初始化可隐藏单元格的是否隐藏标志
for Idx:=0 to 12 do
HasVal[Idx] := 0;
end.