我在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中解决此问题。请帮我。
在MasterData波段的属性中,确保将Stretchable设置为True,并将Stretch Mode设置为Actual Size。
作为附加选项,您始终可以使用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;