TQRMEMO
让它自动换行,我们用了没问题啊好象是该字段
property AutoStretch : Boolean
让它自动换行,我们用了没问题啊好象是该字段
property AutoStretch : Boolean
解决方案 »
- 新人请教。
- delphi 新手,问个新手问题,怎么样把record类型连接成一个 list啊??
- 如何登录服务器?
- 关于时间格式转换的问题《在线等待》
- FastReport得问题!
- 为何这般?如何是好!
- 请教各位大虾: AConnection:=createoleobject('ADODB.Connection'),怎么把AConnection释放,他不支持free
- Toolbar1.Visible = False; & Toolbar1.Visible = True;
- LAZA,继续 !
- 寻找好的文本数据库
- 那位能详细讲一讲用spcomm控件发送、接收信息的流程??
- 请教如何利用DELPHI 开发DOS 环境下的应用程序?????????????
用的一个TQRExprMemo Lines= {字段名称}
属性如下:
AutoSize = True
AutoStretch = True
Lines.Strings = (
'{ADOTBCIItem.REMARKS}')
WordWrap = True
可是得不到换行的效果
AutoSize = False 也不行
看看代码,我没有时间说得很详细!sorry!
Procedure SetStrToLines(const str1:string); // 自定义方法,对字数过多的换行
var { 还没有考虑英文字符跟中文的关系,以及全角半角的问题 }
iLength,iCenter,i,m,n:integer;
// strI:array[0..100] of Integer;
begin
// m:=0; n:=0;
iLength:=Length(str1); // 字符总长度
iCenter:=iLength div 2; // 总字数长度的一半
{ FOR i:=1 to iLength do
begin
strI[i]:=Length(str1[i]);
IF strI[i]=1 THEN // 为英文字符,一个字节
begin
m:=m+1;
end
ELSE // 为中文字符,两个字节
begin
n:=n+1;
end;
end; }
IF iLength>20 THEN // 如果10个汉字以上,一个汉字两个字节
begin
PrintFrm.QRLabel2.Caption:=Copy(Str1,1,20); // 前10个汉字为一行
PrintFrm.QRLabel3.Caption:=Copy(str1,21,iLength-10); // 后面的汉字为一行
end
ELSE
begin // 如果汉字个数少于10个就只在一行上显示
PrintFrm.QRLabel2.Caption:=str1;
end;
end;
.
.
.
procedure TPrintFrm.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
const FuS='%2f';
var TempVar:Real48;
begin // 如果"单位"字段字数太多就给我换行
setStrToLines(mainfrm.ADOQuery1.fieldbyname('单位').AsString);
...
QRLabel4.Caption:=Format(Fus,[TempVar]);// 会自动四舍五入
end;