请教大家:动态创建fastReport报表时,如何定位各位控件位置???急呀

dickman 2005-01-20 04:21:00
以下是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;
...全文
405 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sr_jn 2005-01-21
  • 打赏
  • 举报
回复
fastreport控件可以在运行状态下修改打印格式和打印内容,其本身就带有一个demo
广州接入 2005-01-20
  • 打赏
  • 举报
回复
而且如果你愿意,还可以让用户自己修改模板。
广州接入 2005-01-20
  • 打赏
  • 举报
回复
没必要动态创建,采用一个个模板会更好,而且模板还可以在不用修改程序的情况下修改。
dickman 2005-01-20
  • 打赏
  • 举报
回复
在线等待

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧