一个令我头疼的quickrep打印问题!十万火急!(100分)

  • 主题发起人 主题发起人 jadeking
  • 开始时间 开始时间
J

jadeking

Unregistered / Unconfirmed
GUEST, unregistred user!
我在quickrep打印中遇到了这样一个问题:
某一个qrdbtext控件,在显示它的时候,有这样的限制:
如果它的显示长度超过一个值,就要分行(最多两行)显示;
如果它的显示长度不够这一个宽度(值)的话,也就是只显示一行时,
就要在第二行的位置上将它显示出来!
各位大虾,请帮帮我!!
 
这几个属性要组合设置的具体我记不得了,你自己再试一试,肯定行
AUTOSIZE 设置为FALSE
ASUTOSTRETCH 设置为TRUE
WORDWRAP设置为TRUE
 
这几个组合要试一下
两年前,我曾用QUICKREPORT做了一大摊报表.
 
自己在打印事件中加点控制,楼上的也很对。
 
对不起我没有完全看清楚你的问题,
参照如下代码(N年前写的,比较烂)
在ONPRINT里调用
function TForm_LineOperationNote.GetOperationStep(const Ticket_id : integer): string;
var
Query: string;
Step_no: integer;
Step_Desc: widestring;
s: widestring;
s1,s2: widestring;
begin

with CDS2do

begin

Close;
Query:='select * from DB2USER.OPTIC_STEP where TICKET_ID='+inttostr(Ticket_id)+' order by STEP_NO';
Provider.DataRequest(Query);
Open;
First;
while not eofdo

begin

Step_no:=fieldbyname('STEP_NO').asinteger;
Step_Desc:=fieldbyname('STEP_DESC').asstring;
s1:= Step_Desc;
if Length(s1)<= 55 then

begin

s:=s+inttostr(Step_no)+' '+Step_Desc+chr(13)+chr(10)+
'-------------------------------------------------------------------------------------------------------------------'
+chr(13)+chr(10);
end;

if Length(s1)>55 then

begin

s1:=copy(Step_Desc,1,55);
s2:=copy(Step_Desc,56,Length(Step_Desc)-55);
s:=s+inttostr(Step_no)+' '+s1+chr(13)+chr(10)+
'-------------------------------------------------------------------------------------------------------------------'
+chr(13)+chr(10)
+' '+s2+chr(13)+chr(10)+
'-------------------------------------------------------------------------------------------------------------------'
+chr(13)+chr(10);
end;

next;
end;

close;
end;

Result := s;
end;

 
to 笑傲江湖:这样强行截会不会把汉字截断?
 
接受答案了.
 
后退
顶部