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

有关fastreport中分页问题

答題得分者是:pedro
like
一般會員


發表:30
回覆:35
積分:18
註冊:2005-03-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-08-20 15:32:45 IP:58.17.xxx.xxx 訂閱
在程序中动态生成memoview控件,但是内容高度无法确定,现遇到这样一个问题, 

如果memoview控件中内容很长,超过了一页,我将memoview的属性stretchmode设置为smActualHeight后,

预览时,发现memoview控件内容满满一页,并且有些内容显示不了,而不会自动分到下一页进行显示。

像这种情况,该如何设计将memoview内容分割到二页呢?还请各位指点一下思路,谢谢!
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-08-22 17:29:14 IP:60.248.xxx.xxx 未訂閱
給您提示一下實作思考方向
1.報表裡放置FrxPictureView,連結到DataSet(ClientDataSet)的bmp欄位,欄位型態為TBlobField
2.把Memo的內容依固定長度(報表裡FrxPictureView的Height),用迴圈處理
透過http://www.delphipages.com/tips/thread.cfm?ID=257
這種方式切割存到bmp檔.
3.把上面存的檔檔用append載入到ClientDataSet裡
4.也就是說ClientDataSet已存多筆裁切好的bmp圖像

大概示意的程式碼是這樣(沒經過實測,可能要你自己調校)
(以下是採圖像裁切,若採用文字格式,大概思維方式差不多,請自行處理)

[code delphi]
procedure PrepareReport;
const
perHeight=500;
var
bmp,bmp1: TBitmap;
i:Integer;
btop,bcount:Integer;
stream:TMemoryStream;
begin
bcount:=Memo1.Height div PerHeight;
bmp := TBitmap.Create;
try
if TreeView1.Width>500 then
bmp.Width:=500
else
bmp.Width := perHeight;
bmp.Height := 500;
bmp.Canvas.Lock;
try
Memo1.Perform(WM_PRINT, bmp.Canvas.Handle, PRF_CHILDREN or PRF_CLIENT or PRF_NONCLIENT);
finally
bmp.Canvas.UnLock;
ClientDataSet1.Close;
ClientDataSet1.CreateDataSet;
for i:=0 to bcount do
begin
btop:=i*PerHeight;
bmp1:=TBitmap.Create;
bmp1.Width:=bmp.Width;
bmp1.Height:=PerHeight;
bmp1.Canvas.CopyRect(Rect(0,0,Memo1.Width,PerHeight),bmp.Canvas,Rect(0,btop,Memo1.Width,btop PerHeight));
stream:=TMemoryStream.Create;
bmp1.SaveToStream(stream);
ClientDataSet1.Append;
TBlobField(ClientDataSet1.FieldByName('bmp')).LoadFromStream(stream);
ClientDataSet1.Post;
bmp1.Free;
stream.Free;
end;
end;
finally
bmp.Free;
end;
[/code]
編輯記錄
pedro 重新編輯於 2008-08-22 17:35:41, 註解 無‧
chinyu
高階會員


發表:12
回覆:157
積分:153
註冊:2002-06-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-08-25 20:28:21 IP:220.134.xxx.xxx 訂閱
Band 的 AllowSplite 與 Stretched 屬性設為 True 就可以了。
編輯記錄
chinyu 重新編輯於 2008-08-25 20:28:53, 註解 無‧
like
一般會員


發表:30
回覆:35
積分:18
註冊:2005-03-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-09-01 14:31:10 IP:58.17.xxx.xxx 訂閱
谢谢二位指点,我再试试!
系統時間:2024-04-25 9:57:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!