在Fastreport中如何在打印前获得某一字段能打印的最大字数?
由于特殊要求需要对超出范围的字进行换行处理。
如下面表格样式:---------------------------------------
| No| 地址 | 内容 | 说明|
---------------------------------------
| 1 | 上海 | 相关要打印的内容 | |
---------------------------------------
| 2 | | 这行要打印的内容 | |
| | 徐汇 | 超出了最大打印字 | |
| | | 数,Fastreport自动 | |
| | | 换行成这个样式。 | |
---------------------------------------
| 3 |其他区 | 相关操作-2 | |
---------------------------------------由于对样式要求严格不允许出现上面的换行形式,需要产生下面的样式。
中间第2行内容产生4行,而不能在一行中。---------------------------------------
| No| 地址 | 内容 | 说明|
---------------------------------------
| 1 | 上海 | 相关要打印的内容 | |
---------------------------------------
| 2 | 徐汇 | 这行要打印的内容 | |
---------------------------------------
| | | 超出了最大打印字 | |
---------------------------------------
| | | 数,Fastreport自动 | |
---------------------------------------
| | | 换行成这个样式。 | |
---------------------------------------
| 3 |其他区 | 相关操作-2 | |
---------------------------------------本人比较愚钝的做法是,先获取[内容]字段能打印的最大字数。打印前先分隔好,再输出到fastreport中。现在的问题是,[内容]字段可能会改变字体,如果把最大字数固定下来就会出现麻烦。所以打印前先从fastreport中获取这个字段的最大字数,再分割打印输出。
用什么方法才能获取这个打印的最大打印字数?或是有其他什么方法能处理这个换行问题都可以!
由于特殊要求需要对超出范围的字进行换行处理。
如下面表格样式:---------------------------------------
| No| 地址 | 内容 | 说明|
---------------------------------------
| 1 | 上海 | 相关要打印的内容 | |
---------------------------------------
| 2 | | 这行要打印的内容 | |
| | 徐汇 | 超出了最大打印字 | |
| | | 数,Fastreport自动 | |
| | | 换行成这个样式。 | |
---------------------------------------
| 3 |其他区 | 相关操作-2 | |
---------------------------------------由于对样式要求严格不允许出现上面的换行形式,需要产生下面的样式。
中间第2行内容产生4行,而不能在一行中。---------------------------------------
| No| 地址 | 内容 | 说明|
---------------------------------------
| 1 | 上海 | 相关要打印的内容 | |
---------------------------------------
| 2 | 徐汇 | 这行要打印的内容 | |
---------------------------------------
| | | 超出了最大打印字 | |
---------------------------------------
| | | 数,Fastreport自动 | |
---------------------------------------
| | | 换行成这个样式。 | |
---------------------------------------
| 3 |其他区 | 相关操作-2 | |
---------------------------------------本人比较愚钝的做法是,先获取[内容]字段能打印的最大字数。打印前先分隔好,再输出到fastreport中。现在的问题是,[内容]字段可能会改变字体,如果把最大字数固定下来就会出现麻烦。所以打印前先从fastreport中获取这个字段的最大字数,再分割打印输出。
用什么方法才能获取这个打印的最大打印字数?或是有其他什么方法能处理这个换行问题都可以!
我以前也是采用类似你的方法解决.
给你的memo加个事件:
procedure MemoStartPriceOnBeforePrint(Sender: TfrxComponent);
begin
showmessage(length(MemoStartPrice.Text));
end;
iuIRCClient(我是老鹰)首先,谢谢你! 不过你的答案和我想要的有些出入,是我米说明白。不是想要这个数据字段的文本长度,想要这个字段在报表中,一行内最多能打印多少字数的长度。报表的字段的字体改变会对一行内最多容纳的字也会随之改变,所以想在打印前先获得能显示的最多字数。
比如: 下面表格样式情况下,字段[内容]在一行内最多能打印多少字。
下面的表格样式显示,[内容]字段在一行内最多能打印17个字符。根据行最大打印数,处理换行问题。
关于字符的全/半角很容易处理,所以只要知道一行内能容纳多少字数就可以了。
---------------------------------------
| No| 地址 | 内容 | 说明|
---------------------------------------
| 1 | 上海 | 相关要打印的内容 | |
---------------------------------------
| 2 | 徐汇 | 这行要打印的内容 | |
---------------------------------------
| | | 超出了最大打印字 | |
---------------------------------------
| | | 数,Fastreport自动 | |
---------------------------------------
| | | 换行成这个样式。 | |
---------------------------------------
| 3 |其他区 | 相关操作-2 | |
---------------------------------------
在打印之前,你可以取到这个memo的宽度,当然你要想办法转换成像素(默认的好像是厘米)
然后,你根据当前字体设置情况算出内容的长度,两个值比较可以得出什么时候该换行。不过这个有些麻烦,我现在找不到可供参考的代码了。