[email protected]
发过来,我帮你调试,呵呵;

解决方案 »

  1.   

    我觉的你的想法不太对,你看一看:
    rocedure Tform.QuickRep1Preview(Sender: TObject);
    var
       Form:Tform;
    begin
       form:=tform.Create(application);
       form.table:='m_dajy';
       form.QRPreview1.QRPrinter:=tqrprinter(sender);
       form.show;
    end;
      

  2.   

    //设计室设计Preview Form,把他加入到工程中。
     TPreviewForm = class(TForm)
      private
        { Private declarations }
      public
        MainQRPreview: TQRPreview; //在这里定义!!!!!!!!!
        { Public declarations }
      end;//现实。
    procedure TForm1.QuickRep1Preview(Sender: TObject);
    begin    Form.MainQRPreview:=TQRPreview.create(PreviewForm);
        PreviewForm.MainQRPreview.Parent :=PreviewForm;
        PreviewForm.MainQRPreview.Align:=alClient;
        PreviewForm.MainQRPreview.QRPrinter := TQRPrinter(Sender);
        PreviewForm.Show;
      
    end;
      

  3.   

    MainQRPreview: TQRPreview; //在这里定义!!!!!!!!!
    这是干什么用的??
      

  4.   

    我想不应该是那个访问出错吧,!
    你把它这样定义TPreviewForm = class(TForm)
      private
        { Private declarations }
      public
        
        { Public declarations }
      end;
      
      var
      PreviewForm :TPreviewForm;
      MainQRPreview: TQRPreview; //在这里定义!!!!!!!!!
      

  5.   

    我知道原因了,因为我在Preview声明了Panel,却想使用PreviewForm上在设计期放上去的Panel,实际上程序
    DrawTitle(Panel.Canvas,pw,ph,tm,lm,rm,bm);
    这个地方的Panel还是我在Preview过程中声明的Panel,却不是我在设计期放在Form上的Panel,而这个地方的Panel没有初始化,所以编译器会报错改过之后我的代码是这样的procedure TxfDBGridPrinter.Preview;
    var
      
      pw,ph:integer;
      tm,lm,rm,bm:integer;
    begin
      pw:=Round(PageWidth*DefaultRatio);
      ph:=Round(PageHeight*DefaultRatio);
      with MarginOption do
      begin
        tm:=Round(TopMargin*DefaultRatio);
        lm:=Round(LeftMargin*DefaultRatio);
        rm:=Round(RightMargin*DefaultRatio);
        bm:=Round(BottomMargin*DefaultRatio);
      end;  PreviewForm:=TPreviewForm.Create(Application);  PreviewForm.Show;
      PreviewForm.Panel.SetBounds(200,84,pw,ph);
      DrawTitle(Panel.Canvas,pw,ph,tm,lm,rm,bm);
      //DrawHeader(Panel.Canvas,pw,ph,tm,lm,rm,bm);
    end;这时候编译器报错Undeclared identifier:'Panel'说我的Panel未定义???是不是在控件中不能调用动态创建成的窗体上的控件????