QuickRep報表問題,急需您的幫助,各位高手請進! (100分)

  • 主题发起人 主题发起人 weifang
  • 开始时间 开始时间
W

weifang

Unregistered / Unconfirmed
GUEST, unregistred user!
用delphi6.0自帶的QuickRep做報表。以下是讓QRDBText1自動換行過程。但是QRShape高度不會隨著DetailBand1的高度變化而變化。1: 怎樣解決QRShape高度問題呢? 2: 有沒有更好的換行代碼(下面的換行過程有點問題,有時會切去字符)?請個位高手相助!
procedure Tfm_form.QRDBText1Print(sender: TObject;
var Value: String);
var
iLen : integer;
strSource, strTemp : string;
begin
if Length(Value) <= QRDBText12.Width/7 then
exit;
strSource := Value;
Value := '';
while truedo
begin
iLen := 1;
while iLen < QRDBText12.Width/7do
begin
if ord(strSource[iLen]) > 334 then
inc(iLen, 2)
else
inc(iLen);
end;
dec(iLen);
strTemp := Copy(strSource, 1, iLen);

if Value = '' then
Value := strTemp
else
Value := Value + #13 + strTemp;
strSource := Copy(strSource, iLen + 1, Length(strSource) - iLen);
if Length(strSource) <= QRDBText12.Width/7 then
begin
Value := Value + #13 + strSource;
exit;
end;
end;

end;
 
呵呵,你好啊,咱们又见面了……最近我没上QQ了。
你发的东西我也收到,谢谢……
Type
TMyQRShape = class(TQRShape)
published
property Align;
end;
这样就可以了吧~~
 
hongxing_dl ,謝謝幫助!
但是這一句還有問題TMyQRShape(QRShape1).Align := alLeftJustify;
錯誤提示:undeclared identifier.'alLeftJustify'
 
alLeftJustify是TAlignment
但Align是 TAlign类型的,所以应该是:
TMyQRShape(QRShape1).Align := alLeft;
Ok~~~~~
 
hongxing_dl
是可以啦。但是還是不能解決換行時QRShape高度隨著Dwtailband的高度變化而變化。
你知道怎麼解決嗎?
 
呵呵~
具体行不行我没试过,
我帮你试试看~~~~
 
点预览之前设置,我在D4下面是通过了的。
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
DetailBand1.Height:=100;
tmyqrshape(qrshape1).align:=alleft;
quickrep1.Preview;
end;
 
幫我研究一下。上面說的不行!
你怎麼還是用d4呀?
 
呵呵~~~那就再用D6试试~~~~
 
D6我也试过了,可以的啊~~~~~~~~
 
不行,DetailBand1.Height:=100;不能規定的! 要自動變化!
 
DetailBand1.Height:=100是变化的,根据什么变,内容~~~~?
将你得到的高度赋值给它也不行吗?
这些可都是我调试过的呀
 
BeforePrint事件里裡面添加下面的不行。我是在換行時!
DetailBand1.Height:=100;
tmyqrshape(qrshape1).align:=alleft;
 
是啊,这确实是个问题,我明白你的意思了。
共同研究吧~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
这个问题倒真是个问题,我想非要通过这种方法来解决是很有难度的,也许根本就不可能实现。完全用画布的形式应该可以……但占用资源和效率相对会降低。
 
TO:hongxing_dl
幫我研究一下。那一種方式都行,只要能換行和qrshape高度會更著變化就可以!謝謝!
 
將QRSHAPE的高度做得暴大,你會有意想不到的收獲
 
TO:keepyea
不行,我做過。這樣的話會顯示很多多余的豎線來。不行的!
 
我這樣寫為什麼還是有點問題:
procedure Tfm_form.QRDBText1Print(sender: TObject;
var Value: String);
var
iLen : integer;
strSource, strTemp : string;
begin
if Length(Value) <= QRDBText12.Width/7 then
exit;
strSource := Value;
Value := '';
while truedo
begin
iLen := 1;
while iLen < QRDBText12.Width/7do
begin
if ord(strSource[iLen]) > 334 then
inc(iLen, 2)
else
inc(iLen);
end;
dec(iLen);
strTemp := Copy(strSource, 1, iLen);
if Value = '' then
Value := strTemp
else
Value := Value + #13 + strTemp;
strSource := Copy(strSource, iLen + 1, Length(strSource) - iLen);
if Length(strSource) <= QRDBText12.Width/7 then
begin
Value := Value + #13 + strSource;
QRShape21.Height:=QRShape21.Height+15;{ 15是QRShape21.Height的高度, QRShape21是QRDBText1旁邊的線,其它的QRShape是另外字段旁邊的線}
QRShape25.Height:=QRShape21.Height;
QRShape9.Height:=QRShape21.Height;
QRShape11.Height:=QRShape21.Height;
QRShape13.Height:=QRShape21.Height;
QRShape19.Height:=QRShape21.Height;
QRShape15.Height:=QRShape21.Height;
QRShape4.Height:=QRShape21.Height;
QRShape23.Height:=QRShape21.Height;
QRShape17.Height:=QRShape21.Height;
QRShape8.Height:=QRShape21.Height;
exit;
end;
end;

end;

為什麼不能在每換一次行時,不能夠自動跟著加15呢?
高手請幫忙解決!
 
不要用QR開報表了,QR太爛了
我以前開的報表是用QR開的
現在都要改成RB
郁悶啦
 
后退
顶部