function Page1OnBeforePrint(Sender)
{
if (Engine.FinalPass) {
for(i=13; i>=0; i--){
//如果当前尺码都无值,则隐藏该尺码表头和内容框
if(HasVal[i] != 1){
var mem1 = TfrxMemoView(Report.FindObject("Memo_"+IntToStr(i+1)));
mem1.Visible = false;
var mem3 = TfrxMemoView(Report.FindObject("Val_"+IntToStr(i+1)));
mem3.Visible = false;
for(j=i; j<LastCol-1; j++){
var mem2 = TfrxMemoView(Report.FindObject("Memo_"+IntToStr(j+1)));
if(mem2.Visible){
mem2.Left = mem2.Left - mem1.width;
}
var mem4 = TfrxMemoView(Report.FindObject("Val_"+IntToStr(j+1)));
if(mem4.Visible){
mem4.Left = mem4.Left - mem3.width;
}
}
}
}
}
}
6、然后预览效果:
7、完整脚本如下:
var LastCol = 19; //最后一行的序号(该值固定 )
var HasVal = [0,0,0,0,0,0,0,0,0,0,0,0,0,0]; //存储存储每个尺码是否有值的数组
var Idx;
function DetailData1OnBeforePrint(Sender)
{
if(!Engine.FinalPass) {
if (<详情信息."尺码XXS"> > 0) HasVal[0] = 1;
if (<详情信息."尺码XS"> > 0) HasVal[1] = 1;
if (<详情信息."尺码S"> > 0) HasVal[2] = 1;
if (<详情信息."尺码M"> > 0) HasVal[3] = 1;
if (<详情信息."尺码L"> > 0) HasVal[4] = 1;
if (<详情信息."尺码XL"> > 0) HasVal[5] = 1;
if (<详情信息."尺码XXL"> > 0) HasVal[6] = 1;
if (<详情信息."尺码3SXL"> > 0) HasVal[7] = 1;
if (<详情信息."尺码4SXL"> > 0) HasVal[8] = 1;
if (<详情信息."尺码5SXL"> > 0) HasVal[9] = 1;
if (<详情信息."尺码6SXL"> > 0) HasVal[10] = 1;
if (<详情信息."尺码7SXL"> > 0) HasVal[11] = 1;
if (<详情信息."尺码8SXL"> > 0) HasVal[12] = 1;
}
}
function Page1OnBeforePrint(Sender)
{
if (Engine.FinalPass) {
for(i=13; i>=0; i--){
//如果当前尺码都无值,则隐藏该尺码表头和内容框
if(HasVal[i] != 1){
var mem1 = TfrxMemoView(Report.FindObject("Memo_"+IntToStr(i+1)));
mem1.Visible = false;
var mem3 = TfrxMemoView(Report.FindObject("Val_"+IntToStr(i+1)));
mem3.Visible = false;
for(j=i; j<LastCol-1; j++){
var mem2 = TfrxMemoView(Report.FindObject("Memo_"+IntToStr(j+1)));
if(mem2.Visible){
mem2.Left = mem2.Left - mem1.width;
}
var mem4 = TfrxMemoView(Report.FindObject("Val_"+IntToStr(j+1)));
if(mem4.Visible){
mem4.Left = mem4.Left - mem3.width;
}
}
}
}
}
}
8、PascalScript的方法跟JScript一样,完整脚本如下:
var
LastCol: Integer = 19; //最后一行的序号(该值固定 )
HasVal: array[0..13] of Integer; //存储存储每个尺码是否有值的数组
Idx: Integer;
procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
var
I:Integer;
begin
if not Engine.FinalPass then
begin
if (<详情信息."尺码XXS"> > 0) then HasVal[0] := 1;
if (<详情信息."尺码XS"> > 0) then HasVal[1] := 1;
if (<详情信息."尺码S"> > 0) then HasVal[2] := 1;
if (<详情信息."尺码M"> > 0) then HasVal[3] := 1;
if (<详情信息."尺码L"> > 0) then HasVal[4] := 1;
if (<详情信息."尺码XL"> > 0) then HasVal[5] := 1;
if (<详情信息."尺码XXL"> > 0) then HasVal[6] := 1;
if (<详情信息."尺码3SXL"> > 0) then HasVal[7] := 1;
if (<详情信息."尺码4SXL"> > 0) then HasVal[8] := 1;
if (<详情信息."尺码5SXL"> > 0) then HasVal[9] := 1;
if (<详情信息."尺码6SXL"> > 0) then HasVal[10] := 1;
if (<详情信息."尺码7SXL"> > 0) then HasVal[11] := 1;
if (<详情信息."尺码8SXL"> > 0) then HasVal[12] := 1;
end;
end;
procedure Page1OnBeforePrint(Sender: TfrxComponent);
var
I, J: Integer;
mem1, mem2, mem3, mem4: 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;
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;
end;
end;
end;
end;
end;
begin
//Init Has value array
for Idx:=0 to 12 do
HasVal[Idx] := 0;
end.