文本型长字段的等宽显示

对于文本型的字段(或公式,或参数或文本框等等),如果内容较多,可以通过在字段上点右键,设置对象格式,勾选可以扩大即可进行分行显示。
不过有时候效果并不能令我们满意,比如对于一个字段:有一个字段内容为:xxxxxxx yyyyyyyyyyy zzzzzzzzzzzz
这个字段在水晶报中显示为:
xxxxxxx
yyyyyyyyyyy
zzzzzzzzzzzz

而实际上要显示为:
xxxxxxx yyyyy
yyyyyy  zzzzzz
zzzzzz

因为水晶报表在换行时,优先保留了单词的完整性(或者说优先以空格、符号位置换行),所以一般不会在单词中间断开的。

这里我们可以做一个公式,对其主动换行。使用 basic 语法

Dim i as number
Dim j as number
Dim s1 as string
Dim s2 as string
'要处理的字符串
s1="xxxxxxx yyyyyyyyyyy zzzzzzzzzzzz"
'每行需要的宽度
j=Length("xxxxxxx yyyyyy")
for i=1 to Len(s1) 
    
'如果是第一行,不用换行
    if i=1 then 
        s2
=Mid(s1,i,j)
    
Else
        
'不是第一行则加一个换行
        s2= s2 & chr(13& Mid(s1,i,j)
    
End if
    
'切换到下一个分割点
    i=i+j
Next
formula
=s2

 

这个对纯英文字符是可以直接用的(该公式拖到模板上后也要将其设置为可扩大),但是如果是中文或其他语种可能就要注意宽度。

比如这样一段文本:汇景大道宝德花园南区15街2座10梯201房、401房、501房;东风东路锦城花园A区2座1601房、 1701房、1801房。

明显数字和汉字的宽度是不一样的,而且数字1和数字5的显示宽度上也有差异,在处理的时候则要特别注意些。

 

 

posted @ 2008-11-06 10:37  阿泰  阅读(4578)  评论(0编辑  收藏  举报