fastreport:自动创建他Tpictureview控件,预览打印m*n幅图像,怎么做?(200)

D

dingcs

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用fastreport做一个预览打印图像的程序,图像有m*n幅,要求fastreport自动按m行n列的排列方式预览打印图像,fastreport中的图像显示要求动态创建,大侠们请帮帮我。dingcs1975@hotmail.com.
 
如果图像在数据库中你可以用分栏报表实现。如果图像根本就不在数据库中,你还不如不用fastreport实现呢。在form上创建picture控件,form也能直接打印的。
 
谢楼上vmao兄,图片是保存在某目录中,用fastreport做事因为想做成报表的方式,可以结合数据库中的信息打印出来。兄弟们帮帮忙,给个例子。dingcs1975@hotmail.com
 
应该可以做到.设定TfrxPictureView在一个MasterData内.设定好RowCount为图片数量.然后再将写一下 Report 的事件procedure TShareDataModule.frxReportBeforePrint( Sender: TfrxReportComponent);var sfilename, VarName: string;
begin
if Sender is TfrxPictureView then
begin
VarName := TfrxPictureView(Sender).Name;
begin
sfilename :='文件名'; if fileexists(sfilename) then
TfrxPictureView(Sender).Picture.LoadFromFile(sfilename);
end;
end;
 
没有解决问题,只能建一个图像,我想要的是m行n列的图像,还是谢谢楼上的。
 
下面的代码以每一行打4副图像为例子,图片放在c:/test目录里在Master Data里放4个TfrPictureView,依次为Picture1,Picture2,Picture3,Picture4frReport1.StoreInDFM:=True;...implementation{$R *.dfm}procedure TForm1.CreateCDS;
begin
if ClientDataSet1.Active then
ClientDataSet1.Active:=False;
ClientDataSet1.FieldDefs.Clear;
ClientDataSet1.FieldDefs.Add('Pic1',ftString,50);
ClientDataSet1.FieldDefs.Add('Pic2',ftString,50);
ClientDataSet1.FieldDefs.Add('Pic3',ftString,50);
ClientDataSet1.FieldDefs.Add('Pic4',ftString,50);
ClientDataSet1.CreateDataSet;
end;
procedure TForm1.Button1Click(Sender: TObject);const c_Path='c:/test/';var SR:TSearchRec;
iCount:integer;
begin
CreateCDS;
iCount:=1;
if FindFirst(c_Path+'*.jpg',faAnyFile,SR)=0 then
begin
ClientDataSet1.Append;
repeat if (SR.Name='.') or (SR.Name='..') then
Continue;
if iCount mod 5=0 then
begin
if ClientDataSet1.State<>dsBrowse then
ClientDataSet1.Post;
ClientDataSet1.Append;
iCount:=1;
end;
ClientDataSet1.FieldByName('Pic'+IntToStr(iCount)).AsString:=c_Path+SR.Name;
inc(iCount);
until FindNext(SR)<>0;
end;
if ClientDataSet1.RecordCount=0 then
exit;
frReport1.ShowReport;
end;
procedure TForm1.frReport1begin
Band(Band: TfrBand);var Pic:TfrPictureView;
frView:TfrView;
sPath:string;
begin
if Band.Name='MasterData1' then
begin
frView:=frReport1.FindObject('Picture1');
if frView is TfrPictureView then
begin
pic:=TfrPictureView(frView);
sPath:=ClientDataSet1.fieldByName('Pic1').AsString;
if FileExists(sPath) then
pic.Picture.LoadFromFile(sPath);
end;
frView:=frReport1.FindObject('Picture2');
if frView is TfrPictureView then
begin
pic:=TfrPictureView(frView);
sPath:=ClientDataSet1.fieldByName('Pic2').AsString;
if FileExists(sPath) then
pic.Picture.LoadFromFile(sPath);
end;
frView:=frReport1.FindObject('Picture3');
if frView is TfrPictureView then
begin
pic:=TfrPictureView(frView);
sPath:=ClientDataSet1.fieldByName('Pic3').AsString;
if FileExists(sPath) then
pic.Picture.LoadFromFile(sPath);
end;
frView:=frReport1.FindObject('Picture4');
if frView is TfrPictureView then
begin
pic:=TfrPictureView(frView);
sPath:=ClientDataSet1.fieldByName('Pic4').AsString;
if FileExists(sPath) then
pic.Picture.LoadFromFile(sPath);
end;
end;
end;
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部