之前程序是没问题,不知道怎么的进入模块时报错'不支持的rmf格式',后来我把RMReport报表控件的StoreInDFM属性为false,模块是可以进去了,不过打印报表时就出现题目的错误.
请问是怎么回事?

解决方案 »

  1.   

    程序版本一样的,更奇怪的是我也没改StoreInDFM属性为false之前的程序在其他机器运行没问题,而且在出问题的那台机的管理员用户上也没问题,就在非管理员的一个用户有问题,但是呢在其他机器上都是没问题的.
      

  2.   

    list index out of bounds 表示超出字段范围了,检查下你的字段是否有误
      

  3.   

    我只改了StoreInDFM属性为false才会出这种错,不改之前是没错的,那请问会是什么字段出问题呢?
      

  4.   

    我是觉得代码是没问题的,因为我没改StoreInDFM属性之前是没这个错误的,而且代码那么长也不知道那段出错难道全部贴出来?而且有些控件属性的设置从代码也是看不出来的吧.
      

  5.   

    抱歉!可能表达不清楚让你误解了,是点击ToolBar的打印预览按钮时报错,这和打印机应该没关系吧?
      

  6.   

    应该是stringlist之类的东西超出范围了
      

  7.   

    这里有2个问题:
    1.之前运行还正常的,为什么会突然在某部机器上进入这模块时报'不支持的rmf格式'这个错(非管理员用户才报错,administrator正常),在其他机上的非管理员用户运行却没错,而且好像和管理员权限又没关系,因为我们试过给当前用户管理权限了还是出现同样的问题.重建个非管理员用户,程序开始可以正常运行,但过会就又出现这个错误了.
    2.出现问题1后,我上网找了下,参考http://topic.csdn.net/t/20050906/11/4252259.html这个帖子2楼的建议,把RMReport报表控件的StoreInDFM设成false,程序模块倒是正常运行了,但是到打印预览时又报错'list index out of bounds(0)'(没改StoreInDFM为false之前打印都好好的,所以应该不是tsingfeng_bhcss所说的打印机问题,不过还是谢谢你的答案)能解决一个问题就行,可以的话2个都解决了当然更好,分少了的话再想办法加...
      

  8.   

    list index out of bounds(0)根据这判断,是你这边的这个list的count为0,也就是 没有item,而你还是去取了item[0]的值建议取值前先判断count的值是否大于0,或者循环中为for i := 0 to list.cout -1 
      

  9.   

    看下打印过程有没有问题:
    procedure tbPrintAction();
      var
        PrintDate,UserID:TRMView;
      begin
         qryQItems.DisableControls;
         rmrQItemsReport.LoadFromFile('psdh_Report.rmf');//StoreInDFM设成false新加进去的
         rmrQItemsReport.Title := '配送订货单';
    // 下面注释的这一段加进去报错,改StoreInDFM属性之前存在都没错的.
    {
         PrintDate:=rmrQItemsReport.Pages.Pages[0].FindObject('PrintDate');
         if PrintDate<>nil then
         PrintDate.Memo.Text:='打印日期:'+FormatDateTime('yyyy-mm-dd hh:mm:ss',Module1.SysDate+Module1.SysTime);
         UserID:=rmrQItemsReport.Pages.Pages[0].FindObject('UserID');
         if UserID<>nil then
            UserID.Memo.Text:='操作人:'+Module1.UserName;   }  
         rmrQItemsReport.ShowReport;
         qryQItems.EnableControls;
      end;