首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

报表的域控件溢出时怎么伸展

2012-03-21 
报表的域控件溢出时如何伸展?品名规格,长度有长有短,勾选了“溢出时伸展”,好了,看看是怎么伸展的“枸缘酸他

报表的域控件溢出时如何伸展?
品名规格,长度有长有短,勾选了“溢出时伸展”,好了,看看是怎么伸展的

“枸缘酸他莫昔芬/10mg*100s/上海制药一厂”,宽度最大能打印10个汉字。

按想象应当打印两行:
枸缘酸他莫昔芬/10mg*
100s/上海制药一厂

现在打印成了三行:
枸缘酸他莫昔芬
/10mg*100s/上海制药
一厂

感觉就是:半角字符串不拆分

而我的意向是:一行20个字符,如果正好第20个字符是一个汉字的结束,第21个字符折返;如果正好第20和21个字符是一个汉字,则第20个字符就折返;半角字符按实际的长度折返

[解决办法]
在行中插入换行符?
[解决办法]
设置打印字符串的最大宽度
[解决办法]
1、利用SUBSTRC、LENC之类的 函数,容易出现C0005之类的错误;
2、用SUBSTR、LEN,在程序中判断最后1位是否是汉字、全角,再做处理。
[解决办法]
在主程序中加代码:
Set Procedure To MyProc.prg

MyProg.prg 中加一自定义函数,如下

SQL code
*==============================================================* 功能:将字符串尽量平均分成等长度的子字符串,且不受中文字影响* 参数:tcStr ==> 要做分割的字符串,tnLen ==> 想分成的长度*==============================================================Function CUT_STR    Parameters tcStr,tnLen    tcStr=Alltrim(tcStr)    Local lcRetStr    lcRetStr=''    Do While !Empty(tcStr)        If Between(Asc(Rightc(Left(tcStr,tnLen),1)),128,255)            lcRetStr=lcRetStr+Chr(10)+Left(tcStr,tnLen-1)            tcStr=Substr(tcStr,tnLen)        Else            lcRetStr=lcRetStr+Chr(10)+Left(tcStr,tnLen)            tcStr=Substr(tcStr,tnLen+1)        Endif    Enddo    Return Substr(lcRetStr,2)Endfunc
[解决办法]
(十豆三)
 Return Substr(lcRetStr,2)
是不是闪开前边的换行符?

热点排行