隐藏FastReport的交叉表中的行

时间:2013-06-24 10:34:10

标签: delphi pascal fastreport

我一直试图在FastReport中隐藏交叉表中的行,但我找不到这样做的方法。

当我隐藏MemoViews时,它留给我一个空白区域,我不知道如何摆脱它。

以下是代码:

procedure DBCross1OnPrintCell(Memo: TfrxMemoView; RowIndex, ColumnIndex, CellIndex: Integer; RowValues, ColumnValues, Value: Variant);
begin
       if (cellindex = 1) and (rowindex = 1) then begin
               memo.visible := false;
               memo.height  := 0;    
       end;                                  
end;

procedure DBCross1OnPrintRowHeader(Memo: TfrxMemoView; HeaderIndexes, HeaderValues, Value: Variant);
begin                                           
  if (trim(memo.memo.text) = 'HORA') and ( HeaderIndexes[0] = 1 ) then begin              
       memo.visible:=false;
       memo.height  := 0;           
  end;                                  
  if (trim(memo.memo.text) = 'individual') then begin
       memo.height  := memo.height /2;               
  end;
end;

2 个答案:

答案 0 :(得分:0)

在DBCross上使用事件OnCalcHeight

答案 1 :(得分:0)

我找到了一种方法来解决这个问题。您必须在交叉表中禁用自动调整大小,并在您已经获得的相同过程中管理脚本中单元格的大小和位置。

像这样的东西

*

*procedure DBCross1OnPrintCell(Memo: TfrxMemoView; RowIndex, ColumnIndex, CellIndex: Integer; RowValues, ColumnValues, Value: Variant);
begin

if (checkbox1.checked = false) and (cellindex = 0) then begin
memo.width := 0;    
memo.visible := false;
memo.printable := false;          
end; if (checkbox1.checked = false) and (cellindex <> 0) then begin
memo.left := memo.left - ((columnindex+1)*100);
end;
end;
procedure DBCross1OnPrintColumnHeader(Memo: TfrxMemoView; HeaderIndexes, HeaderValues, Value: Variant);
begin

if (checkbox1.checked = false) and (trim(memo.memo.text) = 'Первичные пациенты') then begin
memo.width := 0; memo.text := '';memo.visible := false;memo.printable := false; end;          

if (checkbox1.checked = false) and (HeaderIndexes[0] >= 0) and (memo.width > 100) then begin
memo.width := memo.width - 100; end;    

end;
end;*

*