请教大家:动态创建fastReport报表时,如何定位各位控件位置???急呀
以下是fastReport自带的动态报表demo, 显示了如何动态创建bandView及MemoView,其位置由SetBounds方法设置(其座标相对于整个页面)。 但在实际的应用当中,会有多个bandView、多个MemoView ,如果光在程序中用setbound方法设置各对象位置,将相关麻烦.
能否这样: 先在frReport1中画好几个bandView, 在程序中动态创建MemoView,关其定位在指定的BandView中(设置座标时相对于这个指定的BandView,就象Delphi中Panel里的控件),这样将大大减小工作量,或者各位朋友有什么更多好的方案???
小弟先谢了
procedure TForm1.Button1Click(Sender: TObject);
var
v: TfrView;
b: TfrBandView;
Page: TfrPage;
begin
frReport1.Pages.Clear;
frReport1.Pages.Add; // create page
Page := frReport1.Pages[0];
b := TfrBandView.Create; // create Title band
b.SetBounds(0, 20, 0, 20); // position and size in pixels
b.BandType := btReportTitle; // (only Top and Height are significant
Page.Objects.Add(b); // for the band)
v := TfrMemoView.Create; // create memo
v.SetBounds(20, 20, 200, 16);
v.BandAlign := baWidth;
v.Prop['Alignment'] := frtaCenter; // another way to access properties
v.Prop['Font.Style'] := 2;
v.Memo.Add('Your text is: [Edit1.Text]');
Page.Objects.Add(v);
b := TfrBandView.Create; // create MasterData band
b.SetBounds(0, 60, 0, 20);
b.BandType := btMasterData;
b.Dataset := 'frDBDataSet1'; // band's dataset
Page.Objects.Add(b);
v := TfrMemoView.Create; // create data field
v.SetBounds(20, 60, 200, 16);
v.Memo.Add('[Table1."Company"]');
Page.Objects.Add(v);
frReport1.Pages.Add; // create second page
Page := frReport1.Pages[1];
Page.PageType := ptDialog;
Page.Width := 200;
Page.Height := 170;
Page.Caption := 'Test';
v := TfrEditControl.Create; // create editbox
v.SetBounds(60, 50, 75, 21);
v.Name := 'Edit1';
Page.Objects.Add(v);
v := TfrButtonControl.Create; // create button
v.SetBounds(60, 100, 75, 25);
TfrButtonControl(v).Button.Caption := 'Test!';
TfrButtonControl(v).Button.ModalResult := mrOk;
Page.Objects.Add(v);
frReport1.ShowReport;
end;
能否这样: 先在frReport1中画好几个bandView, 在程序中动态创建MemoView,关其定位在指定的BandView中(设置座标时相对于这个指定的BandView,就象Delphi中Panel里的控件),这样将大大减小工作量,或者各位朋友有什么更多好的方案???
小弟先谢了
procedure TForm1.Button1Click(Sender: TObject);
var
v: TfrView;
b: TfrBandView;
Page: TfrPage;
begin
frReport1.Pages.Clear;
frReport1.Pages.Add; // create page
Page := frReport1.Pages[0];
b := TfrBandView.Create; // create Title band
b.SetBounds(0, 20, 0, 20); // position and size in pixels
b.BandType := btReportTitle; // (only Top and Height are significant
Page.Objects.Add(b); // for the band)
v := TfrMemoView.Create; // create memo
v.SetBounds(20, 20, 200, 16);
v.BandAlign := baWidth;
v.Prop['Alignment'] := frtaCenter; // another way to access properties
v.Prop['Font.Style'] := 2;
v.Memo.Add('Your text is: [Edit1.Text]');
Page.Objects.Add(v);
b := TfrBandView.Create; // create MasterData band
b.SetBounds(0, 60, 0, 20);
b.BandType := btMasterData;
b.Dataset := 'frDBDataSet1'; // band's dataset
Page.Objects.Add(b);
v := TfrMemoView.Create; // create data field
v.SetBounds(20, 60, 200, 16);
v.Memo.Add('[Table1."Company"]');
Page.Objects.Add(v);
frReport1.Pages.Add; // create second page
Page := frReport1.Pages[1];
Page.PageType := ptDialog;
Page.Width := 200;
Page.Height := 170;
Page.Caption := 'Test';
v := TfrEditControl.Create; // create editbox
v.SetBounds(60, 50, 75, 21);
v.Name := 'Edit1';
Page.Objects.Add(v);
v := TfrButtonControl.Create; // create button
v.SetBounds(60, 100, 75, 25);
TfrButtonControl(v).Button.Caption := 'Test!';
TfrButtonControl(v).Button.ModalResult := mrOk;
Page.Objects.Add(v);
frReport1.ShowReport;
end;
...全文
相关推荐
动态给fastreport报表中的变量赋值
首先,让我们理解FastReport的工作原理。FastReport是一种基于Delphi的组件,通过在设计时创建报告模板,然后在运行时填充数据来生成报表。
通过websocket和fastreport控件进行打印
这个message可能包含了报表模板的定义(如test.fr3文件的内容)以及填充模板的数据。客户端收到消息后,解析其中的模板和数据,交由FastReport控件处理。
c#中调用fastReport报表的代码
**创建报表对象** 创建一个FastReport报表对象,这将作为报表的容器: ```csharp FastReport.Report report = new FastReport.Report()
FastReport报表打印显示二维码
**设置二维码数据**:在FastReport的脚本中,可以通过事件处理程序(如OnBeforePrint)来动态设置二维码的内容。这允许你在打印报表时根据需要生成不同的二维码。5.
VC2010使用FastReport报表控件打印编辑报表
本文介绍了一个封装了FastReport报表生成库的代码实现,提供了报表的初始化、加载、保存、设计、打印和预览等操作接口。通过动态加载FastReport.dll,实现了报表库功能函数的调用,支持从文


