X xhr Unregistered / Unconfirmed GUEST, unregistred user! 2007-11-01 #1 要实现的效果,如图:http://www.kingsuns.com.cn/123.jpg<br>其中,上面是人员基本信息,下面是简历等各种明细信息<br>显示数据,可以通过主/明细来显示,<br>但左边的“简历”二字要随着明细行而居中,请问各位,如何处理??
要实现的效果,如图:http://www.kingsuns.com.cn/123.jpg<br>其中,上面是人员基本信息,下面是简历等各种明细信息<br>显示数据,可以通过主/明细来显示,<br>但左边的“简历”二字要随着明细行而居中,请问各位,如何处理??
D Delphizhou Unregistered / Unconfirmed GUEST, unregistred user! 2007-11-01 #3 哪些是作為主表的哪些是作為從表的,能說一下嗎??
S snail2233 Unregistered / Unconfirmed GUEST, unregistred user! 2007-11-01 #5 写一个脚本,在相应的事件中计算一下“简历”总条数的高度,然后再动态更改相关文本的位置,我想应该可以吧
X xhr Unregistered / Unconfirmed GUEST, unregistred user! 2007-11-01 #6 TO snail2233:脚本试过了,没反应,能否列一下!
L levi Unregistered / Unconfirmed GUEST, unregistred user! 2007-11-02 #8 如果是FR 2.52的版本(其他版本我没装,应该可以比照着解决)<br>方法如下:<br>1、打开 fr_Class.pas, <br>constructor TDatabaseFunctionLibrary.Create;<br>begin<br> inherited Create;<br> with List do<br> begin<br> Add('FIELDISNULL');<br> Add('BANDHEIGHT'); //添加这个函数<br> end;<br> AddFunctionDesc('FIELDISNULL', frLoadStr(frRes + 2620), frLoadStr(frRes + 2621));<br> AddFunctionDesc('BANDHEIGHT', frLoadStr(frRes + 2620), 'BANDHEIGHT(<BandDSName>/取当前带区数据集的打印高度'); //Levi<br>end;<br><br>procedure TDatabaseFunctionLibrary.DoFunction(FNo: Integer; p1, p2, p3: Variant;<br> var val: Variant);<br>begin<br> val := 0;<br> case FNo of<br> 0: val := frFieldIsNull(frParser.Calc(p1));<br> 1: Val := frBandHeight(p1); //在这里添加接口<br> end;<br>end;<br><br>打开 FR_Utils.pas<br>添加如下函数,(注意在implementation前加函数头)<br>Function frBandHeight(DBName: String): Integer;<br>var<br> DS : TfrTDataSet;<br> H, tpVal :Variant;<br>begin<br> Result := 0;<br> if OPTName(DBName)='' then<br> begin<br> if CurReport.UseDefaultDataSetName then<br> DS := GetDefaultDataset<br> else<br> DS := nil;<br> end<br> else<br> DS:=frGetDataSet(OPTName(DBName));<br> if DS <> Nil then<br> Result:=Ds.RecordCount;<br> H := CurView.Prop['HEIGHT'];<br> if not VarIsNull(H) then<br> Result := Result * H;<br> CurReport.GetVariableValue('FREESPACE',tpVal);<br> if Not VarIsNull(tpVal) then<br> if Result > tpVal then begin<br> Result := tpVal - tpVal mod H;<br>// CurView.FrameTyp := CurView.FrameTyp and 13;<br> end;<br>end;<br><br>重新编译一下工程,然后在报表设计器里面就可以看到函数 BandHeight,<br>然后在需要伸展的memo的脚本里面写上<br>BEGIN<br> Height := [BANDHEIGHT(ReportDetail)]; <br>END<br>ReportDetail是当前BAND的数据集的名称<br><br>注意这个MEMO的属性需要把 扩展的属性设为FALSE,否则会与第一行的高度相同。<br>把压缩重复值设为TRUE<br>报表采用主从表或分组表均可实现<br><br>存在的问题:<br>1、如果右边的明细的高度自动折成1行以上,则左边的合并格子高度会有误,所以需要控制右边的内容都能在一行内打完<br>2、如果合并的表格正好处于2页之间,则第二页对应的前面不再有相应的表格。
如果是FR 2.52的版本(其他版本我没装,应该可以比照着解决)<br>方法如下:<br>1、打开 fr_Class.pas, <br>constructor TDatabaseFunctionLibrary.Create;<br>begin<br> inherited Create;<br> with List do<br> begin<br> Add('FIELDISNULL');<br> Add('BANDHEIGHT'); //添加这个函数<br> end;<br> AddFunctionDesc('FIELDISNULL', frLoadStr(frRes + 2620), frLoadStr(frRes + 2621));<br> AddFunctionDesc('BANDHEIGHT', frLoadStr(frRes + 2620), 'BANDHEIGHT(<BandDSName>/取当前带区数据集的打印高度'); //Levi<br>end;<br><br>procedure TDatabaseFunctionLibrary.DoFunction(FNo: Integer; p1, p2, p3: Variant;<br> var val: Variant);<br>begin<br> val := 0;<br> case FNo of<br> 0: val := frFieldIsNull(frParser.Calc(p1));<br> 1: Val := frBandHeight(p1); //在这里添加接口<br> end;<br>end;<br><br>打开 FR_Utils.pas<br>添加如下函数,(注意在implementation前加函数头)<br>Function frBandHeight(DBName: String): Integer;<br>var<br> DS : TfrTDataSet;<br> H, tpVal :Variant;<br>begin<br> Result := 0;<br> if OPTName(DBName)='' then<br> begin<br> if CurReport.UseDefaultDataSetName then<br> DS := GetDefaultDataset<br> else<br> DS := nil;<br> end<br> else<br> DS:=frGetDataSet(OPTName(DBName));<br> if DS <> Nil then<br> Result:=Ds.RecordCount;<br> H := CurView.Prop['HEIGHT'];<br> if not VarIsNull(H) then<br> Result := Result * H;<br> CurReport.GetVariableValue('FREESPACE',tpVal);<br> if Not VarIsNull(tpVal) then<br> if Result > tpVal then begin<br> Result := tpVal - tpVal mod H;<br>// CurView.FrameTyp := CurView.FrameTyp and 13;<br> end;<br>end;<br><br>重新编译一下工程,然后在报表设计器里面就可以看到函数 BandHeight,<br>然后在需要伸展的memo的脚本里面写上<br>BEGIN<br> Height := [BANDHEIGHT(ReportDetail)]; <br>END<br>ReportDetail是当前BAND的数据集的名称<br><br>注意这个MEMO的属性需要把 扩展的属性设为FALSE,否则会与第一行的高度相同。<br>把压缩重复值设为TRUE<br>报表采用主从表或分组表均可实现<br><br>存在的问题:<br>1、如果右边的明细的高度自动折成1行以上,则左边的合并格子高度会有误,所以需要控制右边的内容都能在一行内打完<br>2、如果合并的表格正好处于2页之间,则第二页对应的前面不再有相应的表格。
D dcx0026 Unregistered / Unconfirmed GUEST, unregistred user! 2007-11-02 #9 用RM,只要设置TRMMemoView的RepeateOptions属性就可以了。
D dcx0026 Unregistered / Unconfirmed GUEST, unregistred user! 2007-11-02 #10 用RM,只要设置TRMMemoView的RepeateOptions属性就可以了。
I iwillbestrong Unregistered / Unconfirmed GUEST, unregistred user! 2007-11-02 #11 请采用用友的华表构件,功能很强,适合中国人的使用习惯<br>http://www.cellsoft.cc/
X xhr Unregistered / Unconfirmed GUEST, unregistred user! 2007-11-03 #12 用levi的方法好像不行,而且存在那2个问题也不能解决!
L lucky_qiu Unregistered / Unconfirmed GUEST, unregistred user! 2007-11-03 #13 最简单的方法就是:<br>上面的放在表头或页头<br>下面的放在数据区