分类


弱问:关于Delphi7与fastreport变量传递的问题?急!!!(解决后马上给分!)

怎样根据用户选择的对象给报表中一个文本框赋值并显示(比如用户在编辑框里输入报表名称再在报表中显示出来)?我是这样做的(按照网上提供的资料):  
   
      “第一步:在窗体上放一   frReport1:   TfrReport;设置好相关的属性,在fastreport中声明一变量,如Title;  
          第二步:放一memo控件(在frReport1)然后指定其值为[title];  
          第三步:在frReport1的GetValue中  
          procedure   TForm1.frReport1GetValue(const   ParName:   String;  
                    var   ParValue:   Variant);  
          begin  
                  if   ParName='Title'   then   Parvalue:='测试变量';  
          end;”  
   
  查了网上好多地方,也都是这么介绍的,有人说用这种方法给变量赋值在设计报表时是反映不出来的,必须是在程序运行阶段反映,可是我经过编译运行后还是不能在memo中显示出来(显示为空)!会不会是我的FastReport控件装的有问题啊?请高手指点!!!  
          还有就是FastReport   3.x版本在菜单中怎么没有“数据字典”这一项了?  
        (老板要求在一个星期内搞出报表,请各位大侠多多指点)!!!


你没给title赋值,  
  你用shoemessage检查看,应该是没给它值


在frReport1的beforceprint之前写上  
  frReport1.findOBject('Memo1').Memo.add('测试变量');


在frReport1的beforceprint之前写上  
  frReport1.findOBject('Memo1').Memo.add('测试变量');


第一步:在报表设计器中为报表增加变量,report菜单--variables,点category,为新变量命名为var1,然后在报表中加入text   object,点插入表达式(insert   expression),点variables页面,双击刚才新建的变量var1,然后退出就行了(也可在文本框的内容中直接输入[var1])。  
  第二步:使用fastReport的OnGetValue事件然后添加下面的代码:  
  if   VarName='var1'   then     Value:='your   string';  
  这样就行了啊!值得说明的是在添加variables时必须是category,也就是如果加了类别之后,再在该类别中再加Variables就会有错误!所加的variables必须是category的类型(总类别)。


你用的是fr3.x吧,它的动态赋值方法与fr2.x不一样。你照上面的做法,应该就可以了。


to   crystalreport20xx(自学者):  
          我完全按你的方法试了几遍怎么还是不行!我考虑了一下,是不是我用来显示报表预览的时候有问题,感觉就是变量的值没有传过去。我是这样在一个ButtonClick事件中操作的:  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
            frxreport1.LoadFromFile('test2.fr3',false);  
            frxreport1.PrepareReport();  
            frxreport1.ShowPreparedReport;  
   
  end;


loadfromFile这样做会出现错误的。必须如果动态赋值的话,这个frxreport必须也是在程序里动态生成的,不能保存为文件存在。如果你这样做的话,你的frxreport的getvalue事件是没有办法写的。  
  你再试试在form中加入Tfreport,然后双击它,打开你的test2.fr3。  
  test2.fr3中的变量就照上面的设置。然后在frxreport中的事件中找到getValue。写上面说的代码,我估计就是这个问题了。  
  最后在  
  procedure   TForm1.Button1Click(Sender:   TObject);中showreport就行了。  
   
   
  ‘人说用这种方法给变量赋值在设计报表时是反映不出来的,必须是在程序运行阶段反映’  
  这句话是对的。  
   
   
 


用了  
  procedure   TForm1.Button1Click(Sender:   TObject);  
  begin  
            frxreport1.ShowReport;  
  end;  
  还是一样,“变量的值总是传不过去”我怀疑是控件本身的问题了。实在没有办法了!


哪位兄弟有可用的FastReport   2.x版本的安装包,有的话给我发一个。非常感谢!(收到马上给分)  
  我的e-mail:  
  zhangjinsh04@st.lzu.edu.cn或  
  renwoxi0558@sina.com


上一页 下一页




map