我的数据报表中有一个字段使用DATAMEMO控件显示,有时数据量多,有时少,为了节约纸张,这个字段想做成根据数据量自动改变高度值。判断的标准是没问题的,可是如何让这个地方自动调整高度值呢?

解决方案 »

  1.   

    我自己解决了。办法如下:
    先说思路,就是根据字段内容的多少在显示RAVE报表前进行动态的调整这个字段的占用空间的大小,不过此时同时也要调整DATABAND整个空间的高度。还有这个办法是一但调整就是所有的都调整了,不能做到有的大有的小。幸好我的数据也是一般都是小数,偶尔才出现大的数量。代码如下:
    var
        Cus:integer;
        MyDataBand: TRaveDataBand;
        MyPage: TRavePage;
        MyDataMemo: TRaveDataMemo;
    begin
      rvp1.Open;
      if cus <=6  then
      begin
      With RvP1.ProjMan do
          begin
              MyPage := FindRaveComponent('Report1.Page1',nil) as TRavePage;
              MydataBand := FindRaveComponent('dataBand1',Mypage) as TRavedataBand;
              MyDatamemo:=TRaveDatamemo.Create(MyDataBand);
              MyDatamemo.Parent:=MyDataBand;
              MyDatamemo.Name:=GetUniqueName('Datamemo1',MyPage,false);
              MyDatamemo.Height:=0.2;
              MyDataBand.Height:=1.14;
          end;
      end;
      if (cus >6) and (cus<=12) then
      begin
      With RvP1.ProjMan do
          begin
              MyPage := FindRaveComponent('Report1.Page1',nil) as TRavePage;
              MydataBand := FindRaveComponent('dataBand1',Mypage) as TRavedataBand;
              MyDatamemo:=TRaveDatamemo.Create(MyDataBand);
              MyDatamemo.Parent:=MyDataBand;
              MyDatamemo.Name:=GetUniqueName('Datamemo1',MyPage,false);
              MyDatamemo.Height:=0.4;
              MyDataBand.Height:=1.34;
          end;
      end;
      if cus >12  then
      begin
      With RvP1.ProjMan do
          begin
              MyPage := FindRaveComponent('Report1.Page1',nil) as TRavePage;
              MydataBand := FindRaveComponent('dataBand1',Mypage) as TRavedataBand;
              MyDatamemo:=TRaveDatamemo.Create(MyDataBand);
              MyDatamemo.Parent:=MyDataBand;
              MyDatamemo.Name:=GetUniqueName('Datamemo1',MyPage,false);
              MyDatamemo.Height:=0.6;
              MyDataBand.Height:=1.54;
          end;
      end;
      RvP1.Execute;
      RvP1.Close;end;
      

  2.   

    到最后,感觉RAVE报表的灵活性还是不怎么地。如果它能自动自动地根据数据量改变这个控件占用的高度,那就不会再浪费纸了。我上面的办法针对每一份报表比较一致的情况还行。不能实现一份报表内的各段高度自动化。
        哪位要是有更好的办法,欢迎指点。