DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: laidabin
今日帖子: 2
在线用户: 16
导航: 论坛 -> 报表专区 斑竹:sunyesy,iamdream  
作者:
女 jelly (水開了) ★☆☆☆☆ -
普通会员
2003/8/14 10:30:07
标题:
動態創建QReport報表控件﹐窗口關閉時出現地址錯誤﹗﹗急急急﹗ 浏览:2965
加入我的收藏
楼主: 在寫一個報表的時候﹐寫了一個過程﹐在TQuickrep組件上動態創建QRLabel﹑QRImage組件﹐該過程在TQuickrep組件的BeforePrint事件中調用﹐運行后能夠成功預覽。但當Form關閉的時候﹐總是出現地址錯誤信息。如果不調用這個過程則不會出現錯誤。

QRLabel﹑QRImage申明成相對類型的數組﹐在創建QRLabel﹑QRImage時﹐它們的Owner指定為Form﹐Parent指定為TQuickrep上的一個邊條QRBand4.


請高手們一定要幫忙﹗﹗

----------------------------------------------
我是一只丑小鴨﹐
永遠也唱不出一句天鵝之歌。
作者:
男 hedong (hedong) ★☆☆☆☆ -
盒子活跃会员
2003/8/14 10:48:11
1楼: 1.判断一下from关闭时是否有调用的BeforePrint事件中的过程


2.不要将创建过程放入打印from的BeforePrint事件中,最好放在调用打印的窗体中
调用。
----------------------------------------------
-
作者:
女 jelly (水開了) ★☆☆☆☆ -
普通会员
2003/8/14 11:24:52
2楼: 謝謝hedong﹐
真是邪門兒﹐那個過程不能放在Form中執行(我寫在TQuickrep1.Preview過程前面)﹐否則還沒有預覽地址錯誤就出來了~~
----------------------------------------------
我是一只丑小鴨﹐
永遠也唱不出一句天鵝之歌。
作者:
男 hedong (hedong) ★☆☆☆☆ -
盒子活跃会员
2003/8/14 12:54:38
3楼: 不会呀,我的代码就是放在form里执行,没有问题的。

给你写个例子,你自己看看在改改.

DataForm:  调用打印的Form
qrForm:    QuickReport所在Form,即打印form

1. DataForm里
     Use  qrForm
          QuickRpt,Qrprntr,printers, Qrctrls

2. DataForm里建立过程CallPreview

调打印:
   DataForm.buttonPreviewClick(sender: Tobject);
   begin
         // dbgrid1  要打印的表格
         // dataset  dbgrid1连接的数据集
         CallPreview(dbgrid1, dataset); 
   end;

CallPreview过程:
procedure DataForm.CallPreview(dbgrid: TDBGrid; Dataset: TDataset);
begin
  with qrForm do begin
    TitleBand1.Height :=60;
    Cheader:= TQRLabel.Create(qrForm);  ////在TitleBand1中写大标题
    Cheader.Parent := TitleBand1;
    with Cheader do begin
      AlignMent:= TaCenter;
      Caption := '这是标题';
      Width := TitleBand1.width;
      Height := TitleBand1.height-10;
      Left := 0;
      Top := -10;
      Font.Name := TitleFont;
      Font.Size := TitleSize;
    end;//with Cheader
  end;  // with Rep_xsxx

  // 画线
  with qrForm do begin
    ColumnHeaderBand1.Height := DBGridHeight;
    QRShapec:= TQRShape.Create(qrForm); //在Columnheader中建立上框线
    QRshapec.Parent := ColumnHeaderBand1;
    with QRShapec do begin
      Shape := QRShorLine;
      Pen.Width := DBGridwLine;
      Top := 0;
      Width := ColumnHeaderBand1.Width;
      Height := 1;
      Left := 0;
    end;//with QRshapec do
  end;//with qrForm

   // 标题
     with DBGrid do
        for i := 0 to Columns.Count - 1 do begin
            with qrForm do begin
              Cheader:= TQRLabel.Create(qrForm);
              Cheader.Parent := ColumnHeaderBand1;
              with Cheader do begin
                Alignment := Tacenter;
                Caption := Columns[i].Title.Caption;//fieldname;
                Width := Columns[i].Width;
                Height := ColumnHeaderBand1.Height-10;
                Left := 100;
                Top := 7;
                Font.Name := ColumHeaderFont;
                Font.Size := DetailBandSize;
              end;
           end;
      end;
      .........
      ........
 try 
   qrForm.QuickRep1.Preview//报表预览
  finally
    qrForm.Hide;
    qrForm.Free;
  end;

  
end;
----------------------------------------------
-
作者:
女 jelly (水開了) ★☆☆☆☆ -
普通会员
2003/8/15 19:01:30
4楼: 謝謝hehong兄﹐問題解決了....
原因真是不好意思講﹐竟然是我將一個變量j錯寫成了數字1。
----------------------------------------------
我是一只丑小鴨﹐
永遠也唱不出一句天鵝之歌。
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行78.125毫秒 RSS