FastReport预览后修改数据如何刷新(100分)

  • 主题发起人 主题发起人 Walter
  • 开始时间 开始时间
W

Walter

Unregistered / Unconfirmed
GUEST, unregistred user!
一个傻问题,
我使用FastReport2.4作报表,首先预览数据,然后允许用户修改某些数据,
(memo.text = '?????'),我发现改变预览缩放大小后报表能刷新,
但是我希望修改后预览能自动刷新,如何做?
 
一般来说,预览和打印为了提高速度,在打印前一般要DisableControls()的,多数程序
预览窗体都是ShowModal()出来的
你实要要自动刷新那就在数据集的AfterPost和AfterDelete重新预览
 
lynu,
我是想强制刷新预览,就像手工改变预览缩放大小一样
我没指定Preview(用缺省),我正在试是否可以用自定义Preview做到
 
你看看代码,在关于编辑报表的里面调用预览单元窗体,预览的单元里面,你可以自己添加
事件,对DOC进行CHANGPAGER操作,重新生成一次窗体就可以了!
具体的自己做阿[:D]
 
你采用FRPREVIEW来自己动态创建预览窗体,控制窗体刷新就可以了。
也可以利用内部变量和内部的FORM,在用户需要更改的数据上,激活一个单独的FORM,更改数据,
变量会自动刷新。
 
816
我用用自定义Preview做到了刷新。对你的第二种方案,
怎样在预览后再次显示内部FORM呢?
我试来试去没成功。[:(]
 
这个问题也很简单,我已经帮你解决了问题,给分呀。别说话不算数。
你再创建一个FORM,比如FORM2,上面放EDIT控件,一个BUTTON。把BUTTON的MODALRESULT属性设置
为MROK,好,可更改数据的窗体就创建完毕。你可以根据你需求,在上面放任何数量你想更改数据对应的
EDIT控件。你自己看着办。
在你放FRREPORT组件的窗体中,USES 这个新创建的窗体单元。
写如下代码(我放FRREPORT的窗体是FORM1)。
//=========激活FRREPORT frreport1objectclick为自定义过程
//声明为public
// procedure frReport1ObjectClick(View: TfrView);
procedure TForm1.FormDblClick(Sender: TObject);
begin
frreport1.OnObjectClick:=frreport1objectclick;
frreport1.ShowReport;
end;
procedure TForm1.frReport1ObjectClick(View: TfrView);
begin
form2:=tform2.Create(self);
form2.Edit1.text:=view.Memo.Text;
form2.showmodal;
if form2.ModalResult=mrok then
view.memo.Text:=form2.edit1.text;
end;
当然,你不会立刻看到更改效果,你更改下显示比例就会看到效果。后续的自动刷新,可以结合
昨天给你讲的(实际也是你已经达到目的的)方法,把你昨天写的代码结合进来就可以了。
给分呀!
 
816................
我就是想找个办法不用手动更改显示比例就看到更新
---我使用FastReport2.4作报表,首先预览数据,然后允许用户修改某些数据,
---(memo.text = '?????'),我发现改变预览缩放大小后报表能刷新,
---但是我希望修改后预览能自动刷新,如何做?
一定会加分的[:)]
 
你昨天不是已经用FRPREVIEW做到了自动刷新么?怎么还说没有刷新?
上QQ吧。我的是30779705
 
还是用以上的代码,你用FRPREVIEW这个组件,然后,看以下代码,只修改了几行。
procedure TForm1.FormDblClick(Sender: TObject);
begin
frreport1.OnObjectClick:=frreport1objectclick;
frreport1.PrepareReport;
//这里新改的
frreport1.Preview:=frpreview1;//还有这里
frreport1.ShowPreparedReport;//还有这里
end;
procedure TForm1.frReport1ObjectClick(View: TfrView);
begin
form2:=tform2.Create(self);
form2.Edit1.text:=view.Memo.Text;
form2.showmodal;
if form2.ModalResult=mrok then
view.memo.Text:=form2.edit1.text;
frpreview1.Zoom:=100;//这里新改的,其实,也就是强制按原比例刷新,重绘。
form1.Canvas.Refresh;//这里新改的
end;
 
至于说,如何利用FRPREVIEW来进行打印,不用我废话了吧?
 
816
---我用用自定义Preview做到了刷新。
就像我前面说的,我的问题已经用自定义Preview解决,只是想进一步和大家研究一下
是否可能不用自定义Preview而做到强制刷新(我试过修改FastReport的原码,但没深入研究[:D])。
OK,问题结束,加分[8D]
 
后退
顶部