線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:6031
推到 Plurk!
推到 Facebook!

請問FastReport報表Memo 內容如何強制換行?

答題得分者是:chris681016
supertony
一般會員


發表:8
回覆:9
積分:3
註冊:2006-07-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-07 11:12:43 IP:220.130.xxx.xxx 訂閱
各位網友大家好:
請問在FastReport,要如何將 Memo內容字串強制換行呢?我的測試程式如下:

測試換行功能:[TEST]
-------------------------------------------------------------------
begin
TEST:='第一筆明細' #13#10 '第二筆明細';
end

FastReport執行後顯示的資料是 --> 測試換行功能:第一筆明細
'第二筆明細' 這些內容不見了...
我嘗試將換行符號改為 --> #13 , #10
都只會顯示 --> 測試換行功能:第一筆明細
請問應該怎麼寫,才能達到我想得到的結果呢?
--------------------------------------------------------------------
測試換行功能:第一筆明細
第二筆明細
---------------------------------------------------------------------

是不是我使用的換行代碼錯誤?請各位網友不吝指教,謝謝! ~>_<~
chris681016
中階會員


發表:69
回覆:122
積分:98
註冊:2006-10-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-07 13:44:07 IP:211.75.xxx.xxx 訂閱
可以換行丫
procedure PageHeader1OnBeforePrint(Sender: TfrxComponent);
begin
Memo1.TEXT:='AAA' #13 #10 'BBB';
end;

你的Memo1的高度是不是拉的不夠,把Memo1.StrechMode:=smActualHeight 即可
supertony
一般會員


發表:8
回覆:9
積分:3
註冊:2006-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-07 15:55:56 IP:211.76.xxx.xxx 訂閱

===================引 用 chris681016 文 章===================
可以換行丫
procedure PageHeader1OnBeforePrint(Sender: TfrxComponent);
begin
Memo1.TEXT:='AAA' #13 #10 'BBB';
end;

*****************************************************************

感謝chris681016撥冗回覆,我的執行環境是Delphi 7 & FastReport 2.5,請問你上述的程式碼是寫在哪裡呢?
是寫在FastReport --> PageHeader Band --> OnBeforePrint 嗎?
我拉了一個 Insert rectangle object 放入PageHeader Band,物件名稱是Memo1,
我在 PageHeader Band --> "OnBeforePrint" 中寫入程式碼:Memo1.TEXT:='AAA' #13 #10 'BBB';
會出現"Undefined symbol MEMO1.TEXT"

我目前的狀況是這樣的:
由Delphi ADOQuery抓出資料後,將資料傳到FastReport,
在FastReport拉了一個 Insert rectangle object 放入PageHeader Band,物件名稱是Memo1,
雙按Memo1,並在下半部begin end區塊中輸入以下程式碼:

[REM2]
-------------------------------------------------------------------------------------------------------------------------------------------------
begin

WHILE POS('^^',[ADOQuery1."REM"])<>0 DO
BEGIN
REM2:=COPY(REM2,0,POS('^^',REM2)-1) ' ' COPY(REM2,POS('^^',REM2) 2,LENGTH(REM2));
END;

end

本來是以空格取代'^^'字元,但是後來在User的要求下,
希望能將 '^^' 前後的兩串字串分為兩行顯示:
********************************************************
原字串:第一筆明細資料^^第二筆明細資料
希望顯示結果:第一筆明細資料
第二筆明細資料
********************************************************
在上述程式碼中,我試過以#13#10、#13、#10、#13 #10..等等代替空格
REM2:=COPY(REM2,0,POS('^^',REM2)-1) #13 #10 COPY(REM2,POS('^^',REM2) 2,LENGTH(REM2));
都只會出現"第一筆明細資料"這第一行的內容,
感覺上斷行功能好像成功了...可是除了第一行外,其他的資料都不見了...
請問這是為什麼呢?
我該插入什麼字碼才能夠斷行呢?
如果斷行功能成功,那我該怎麼顯示多行呢?

在該物件(Memo1)的"Stretched"屬性設為 True;"WordWrap"屬性設為 True;
所以欄位高度不夠的可能性可以排除了,
再次感謝 chris681016 網友熱心幫忙,再次請大家多多指教,謝謝~
編輯記錄
supertony 重新編輯於 2007-06-07 17:15:03, 註解 無‧
chris681016
中階會員


發表:69
回覆:122
積分:98
註冊:2006-10-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-06-07 17:44:47 IP:211.75.xxx.xxx 訂閱
我用的是FastReport3我試可以耶~~
var s:string;
procedure PageHeader1OnBeforePrint(Sender: TfrxComponent);
begin
s:='第一筆明細資料^^第二筆明細資料';
Memo7.text:=COPY(s,0,POS('^^',s)-1) #13 #10 COPY(s,POS('^^',s) 2,LENGTH(s));
end;
你的版本我就沒用過了

hua2000
中階會員


發表:102
回覆:200
積分:65
註冊:2006-11-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-06-07 21:48:09 IP:218.14.xxx.xxx 未訂閱
用ascall碼是絕對可以了,你可能在memo的長度待地該有一定問題,可能拉的太短了,


可能是你這個component的屬性的什么地方設置的不對,


再加把油喲
supertony
一般會員


發表:8
回覆:9
積分:3
註冊:2006-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-06-08 10:50:40 IP:211.76.xxx.xxx 訂閱
萬分感謝 chris681016、hua2000網友的幫忙以及熱心指導,
小弟不才...嘗試了一天,還是只能顯示第一行的資料,
換行符號後的內容都沒有顯示... ~>_<~
所以改變方式,不在FastReport元件中對抓回的資料做處理,
改在SQL指令時就先取代字串,
我連接的資料庫是DB2,
使用的語法如下:

SELECT REPLACE ( REM , '^^', concat(CHR(13),CHR(10)) ) FROM TABLE

目前已可正確顯示斷行格式及所有資料,
再次感謝chris681016、hua2000網友撥冗指教~ ^0^
系統時間:2024-04-26 1:38:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!