报表的域控件溢出时如何伸展?
品名规格,长度有长有短,勾选了“溢出时伸展”,好了,看看是怎么伸展的
“枸缘酸他莫昔芬/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 中加一自定义函数,如下
*==============================================================* 功能:将字符串尽量平均分成等长度的子字符串,且不受中文字影响* 参数: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)
是不是闪开前边的换行符?