報表內容斷行問題? |
答題得分者是:Justmade
|
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
WordWrap
property WordWrap : Boolean Applies to TQRCustomLabel, TQRLabel Description The WordWrap property controls how a line of text that is too long to fit in the width of the control is printed. If WordWrap is True the text will be wrapped to a new line. If the AutoStretch property is True this might make the control expand vertically. If WordWrap is False the text will be clipped. WordWrap is True by Default 附上help的說明,Description的中文翻譯如下: WordWrap這個屬性用來控制當文字長度超過控制項寬度時的情況,WordWrap設為True時,過長的文字會自動折行到新的一行。如果AutoStretch的屬性也為True時,控制項會以垂直延展的方式來變化。 如果WordWrap的屬性設為False,顯示的文字超過的部分會被截斷無法看到。WordWrap的預設值為True。 |
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
謝謝前輩的說明…
看過說明後…
wordwrap設為true…應該是會換行…
但還是看不到第二行的文字…
可它有空第二行的位置出來說…><~~
引言: 附上help的說明,Description的中文翻譯如下: |
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
這是因為 Quick Report 的斷行控制只是以西方文字的斷行為基準,即是在空白,Tab等地方斷行。所以當我們用中文字而中間沒空白字元時,Quick Report 便不懂得斷行了。那為甚麼有時下面會留一空白行呢,就是因為 QuickReport 計算到需要斷行預留了空位,但卻不懂在那裡斷而沒斷行所致。 我自己的解決辦法是設個功能每 n 個字自動加入一個空白(用 length / copy 等功能),然後給 QRLabel / QRMemo 來顯示,那 QuickReport 就會斷行了,而 n 的數值因應該Label 能顯示多少個字元而定。
|
hahalin
版主 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
|
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
呼呼…原來是這樣…
那我試看看嚕…
只是為何要給 >
<>< face="Verdana, Arial, Helvetica">引言:
這是因為 Quick Report 的斷行控制只是以西方文字的斷行為基準,即是在空白,Tab等地方斷行。所以當我們用中文字而中間沒空白字元時,Quick Report 便不懂得斷行了。那為甚麼有時下面會留一空白行呢,就是因為 QuickReport 計算到需要斷行預留了空位,但卻不懂在那裡斷而沒斷行所致。 我自己的解決辦法是設個功能每 n 個字自動加入一個空白(用 length / copy 等功能),然後給 QRLabel / QRMemo 來顯示,那 QuickReport 就會斷行了,而 n 的數值因應該Label 能顯示多少個字元而定。
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
由於 QRDBText 是直接從數量集元件提取資料的,所以若果你要用 QRDBText 來做,便要做一個 Calculated Field,或是在 OnGetText 做手腳,反而更煩更浪費資源;不如在 Before Print 直接處理後給 TQRLabel 列印更實際。 我剛才找了找幾年前寫的程式,找到這個 :
function ChiWrap(Memo : String;LineLen : Integer) : String; var MemoList, ResultList : Tstrings; i : integer; WS : WideString; begin MemoList := TStringList.Create; ResultList := TStringList.Create; try MemoList.Text := Memo; for i := 0 to MemoList.Count -1 do begin WS := MemoList[i]; while Length(WS) > LineLen do begin ResultList.Add(Copy(WS,0,LineLen)); WS := Copy(WS,LineLen 1,Length(WS)); end; ResultList.Add(WS); end; Result := ResultList.Text; finally MemoList.Free; ResultList.Free; end; end;這幾年都甚少用 QReport 了,這功能寫得不大好但也沒動力去改善了。 例 : QRLabel1.Caption := ChiWrap(Table1.FieldByName('ChiDesc').AsString,40); 修改 : 再看一看才發現居然沒 Free 了那兩個 StringList 。唉... 發表人 - Justmade 於 2003/03/30 18:54:35 |
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
我試了之後…
預覽的結果都是同一筆…
也就是只有一筆在重覆show資料…
< class="code">
procedure TForm1.Button1Click(Sender: TObject);
begin
while not form2.Query1.eof do
begin
form2.QRLabel1.Caption := ChiWrap(form2.Query1.FieldByName('QL_TEXT').AsString,40);
next;
form2.QuickRep1.preview;
end;
end;
引言: 由於 QRDBText 是直接從數量集元件提取資料的,所以若果你要用 QRDBText 來做,便要做一個 Calculated Field,或是在 OnGetText 做手腳,反而更煩更浪費資源;不如在 Before Print 直接處理後給 TQRLabel 列印更實際。 我剛才找了找幾年前寫的程式,找到這個 : 這幾年都甚少用 QReport 了,這功能寫得不大好但也沒動力去改善了。 例 : QRLabel1.Caption := ChiWrap(Table1.FieldByName('ChiDesc').AsString,40); 修改 : 再看一看才發現居然沒 Free 了那兩個 StringList 。唉... 發表人 - Justmade 於 2003/03/30 18:54:35 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
challenge
一般會員 發表:14 回覆:41 積分:11 註冊:2002-10-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |