FastReport高手請進--圖片裝載問題 ( 积分: 50 )

C

clwlyc

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟在用FastReport做報表自定義開發, 有幾個問題想請教一下.
1. 想通過FastReport的設計器寫代碼裝載圖片,根據數據集的某個字段的值為文件路徑, 去調出圖片顯示, 我是這樣寫的:
Picture1.LoadFromFile([MDataSet."PicturePath"]);
這樣寫,黨文件不存在時會拋出異常. 請問, 在FastReport的設計器寫代碼如何判斷文件是否存在? 我試過Delphi的寫法:
if FileExists(FileName) then
通不過編譯.請高手指教.

2. 如何把金額轉換成大寫金額?
 
给一个实现的完整例子
procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent);
var
emptypic,picpath:string;
begin
picpath:=ExtractFilePath(Application.ExeName)+ 'pic/'+
labelededit1.Text+'/'+adoquery1.FieldValues['bmh']+'.jpg';
emptypic:=ExtractFilePath(Application.ExeName)+ 'pic/'+
labelededit1.Text+'/00000000000000'+'.jpg';
if (sender is TFrxPictureView) and (sender.Name='Picture1') then
begin
with (sender as TFrxPictureView) do
if FileExists(picpath) then
Picture.LoadFromFile(picpath)
else
Picture.LoadFromFile(emptypic) ;
end;
end;
 
早期版本的fastreport则应该这样写
procedure TForm1.frReport1BeforePrint(Memo: TStringList; View: TfrView);
begin
//加载照片
if View.Name = 'Picture2' then
if FileExists('photo/'+ado_dt1.FieldValues['bmh'] +'.jpg') then
TfrPictureView(View).Picture.LoadFromFile('photo/'+ado_dt1.FieldValues['bmh'] +'.jpg')
else
TfrPictureView(View).Picture.LoadFromFile('photo/1111111111.jpg')

end;
 
謝謝樓上兩位回答, 不過我是要在FastReport的設計器寫代碼, 不是在Delphi里,望請教.
 
1、 如果直接在设计器中实现,恐怕有点困难,设计器的编译器并不能实现这么复杂的语句。 建议从以下方面考虑( 针对 FR 2.X版本)
1、增加 FrPictureView的 bolbType属性值,用来标明字段保存的是文件名,如 btFileName, 可以在
constructor TfrPictureView.Create
procedure TfrPictureView.DefineProperties; 实现
2、当标明类型是文件名时,即时要从指定文件读入图片,需要对以下过程进行改造
TfrPictureView.GetBlob(b: TfrTField) 即增加当BlobType = btFileName时,将文件读入 Graphic 变时的处理功能。
通过上述改造后,这样在PictureView.dateField中填入文件名后,并且将BlobType设为btFileName后,即可实现打印图片,无需再对设计器作更改。

2、同样,如果是 2.X版本,可以参照我前面的回复
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3723837
 
Levi:
你好, 感謝你的回復,請問一下有FR 3.x版本的實現方式嗎?
 
我用的是FR 3.07版的, 請各位大俠邦邦忙啊!
 
大蝦們, 救救我吧, 我現在在用FastReport做ERP的二次開發, 公司打印的制令單上要求必須帶產品圖片,現在卡在這里了, 急啊!
 
沒人回答, 自己頂起來.
 
幫頂一下。我是沒有碰到過這類的問題。

了解一下。關注中。
 
自己解決了, 在FastReport的設計器寫代碼,處理一下異常就OK了:
try
Picture1.LoadFromFile(<MDataSet.&quot;PicturePath&quot;>);
except
end;
 
多人接受答案了。
 
顶部