DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: jeff1314
今日帖子: 9
在线用户: 3
导航: 论坛 -> 报表专区 斑竹:sunyesy,iamdream  
作者:
女 lovepeayz (海洋之心) ★☆☆☆☆ -
普通会员
2003/4/17 12:49:40
标题:
ereport报表 浏览:5458
加入我的收藏
楼主: 在使用ereport绘制报表时,如何设置页面的大小和纸张大小,请各位大虾帮忙,很急
----------------------------------------------
-
作者:
男 boy (阿門) ★☆☆☆☆ -
盒子活跃会员
2003/4/17 14:28:23
1楼: 以前抓的資料剛整出來參考看看

打印時改變紙張大小
在執行打印前調用以下函數:
procedure SetPaperSize(X, Y: Integer);
// 單位是0.1mm
// A4時 Printer.Pagewidth:=1440;  A5時 Printer.Pagewidth:=1049;
// B5時 Printer.Pagewidth:=1290;  16K時 Printer.Pagewidth:=1035;
// lq1600寬行打印機這個值寬度最大為42cm左右, 長度大約2m。
//改變devicemode結構
var
  Device: array[0..255] of char;
  Driver: array[0..255] of char;
  Port: array[0..255] of char;
  hDMode: THandle;
  PDMode: PDEVMODE;
begin
  Printer.PrinterIndex := Printer.PrinterIndex;
  Printer.GetPrinter(Device, Driver, Port, hDMode);
  if hDMode <> 0 then
  begin
    pDMode := GlobalLock(hDMode);
    if pDMode <> nil then
    begin
      if (x = 0) or (y = 0) then
      begin
        {Set to legal}
        pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
        {pDMode^.dmPaperSize := DMPAPER_LEGAL; changed by wulianmin}
        pDMode^.dmPaperSize := DMPAPER_FANFOLD_US;
      end
      else
      begin
        {Set to custom size}
        pDMode^.dmFields := pDMode^.dmFields or
          DM_PAPERSIZE or
          DM_PAPERWIDTH or
          DM_PAPERLENGTH;
        pDMode^.dmPaperSize := DMPAPER_USER;
        pDMode^.dmPaperWidth := x {SomeValueInTenthsOfAMillimeter};
        pDMode^.dmPaperLength := y {SomeValueInTenthsOfAMillimeter};
      end;
      {設定紙張來源}
      pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
      pDMode^.dmDefaultSource := DMBIN_MANUAL;

      GlobalUnlock(hDMode);
    end;
  end;
  Printer.PrinterIndex := Printer.PrinterIndex;
  //以下開始打印
  Printer.BeginDoc;
  Printer.Canvas.TextOut(100,100, 'Test 1');
  Printer.EndDoc;
end;


========================================
●● 2003/3/17    星期一 ●●


----------------------------------------------
Delphi開發◆伺服器架設◆免安裝APACHE,PHP,CGI Perl, MYSQL ★
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行74.21875毫秒 RSS