如何不显示零值并在FastReport中将其移位

问题描述 投票:0回答:2

我在FastReport中有一个问题。我需要做一个报告,在其中我只能看到非零值。例如,我有从SQL查询填充数据的masterdata。在主数据上,我放置了3个描述和值字段。它看起来像这样:

[DATA."DESC1"] DESCRIPTION1 [DATA."VALUE1"] 100
[DATA."DESC2"] DESCRIPTION2 [DATA."VALUE2"] 0
[DATA."DESC3"] DESCRIPTION3 [DATA."VALUE3"] 50

而且我想在报告中看到

DESCRIPTION1 100
DESCRIPTION3 50

但是现在我看到这样的视图

DESCRIPTION1 100

DESCRIPTION3 50

我不想看到空白位置,我需要将第二个位置上的第三个位置移动,因为第二个值为null。当然,在我的SQL查询中,还有更多带有值的字段。我试图找到一些可以解决我问题的循环,但是我没有找到。我尝试使用属性Visible或ShiftMode,但这没有帮助。 Mayby有人知道如何在FastReport中解决此问题。请帮我。

delphi reporting fastreport
2个回答
0
投票

在MasterData波段的属性中,确保将Stretchable设置为True,并将Stretch Mode设置为Actual Size。


0
投票

作为附加选项,您始终可以使用OnBeforePrint事件(在这种情况下为MasterData波段)并组织您的逻辑:

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
var
   top: Extended;                                     
begin
   top := 0;                           
   // TfrxMemoView 1                                                    
   Memo1.SetBounds(Memo1.Left, top, Memo1.Width, Memo1.Height);
   top := top + Memo9.Height;
   // TfrxMemoView 2                                                       
   if (<DATA."VALUE2"> = 0) then begin                                      
      Memo2.Visible := False;                                                      
      end
   else begin
      Memo2.Visible := True;                                                      
      Memo2.SetBounds(Memo2.Left, top, Memo2.Width, Memo2.Height);
      top := top + Memo2.Height;
   end;
   // TfrxMemoView 3                                                       
   Memo3.SetBounds(Memo3.Left, top, Memo3.Width, Memo3.Height);
   top := top + Memo3.Height;
end;
© www.soinside.com 2019 - 2024. All rights reserved.