国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

如何用Tprinter設計BCB操作數據庫程序中的報表

2019-11-18 18:40:40
字體:
來源:轉載
供稿:網友
經常用Borland C++ Builder5編程,操作數據庫時,報表打印是必不可少的。但BCB5自身所帶的報表控件又顯得缺少靈活性。所以,我想到了用TPRinter來打印報表。使用TPrinter必須要在程序頭部加入#include <vcl/Printers.hpp>
    由于對于不是鏈頁打印紙來說,斷頁很困難,所以,我所需要設定每頁打印的記錄數。下面就是我自己編制的一個每頁打印30條符合條件記錄的代碼,寫給大家,以供參考。
try{
//定位打印頭
  int x,y;
  x=170;
  y=150;
  Printer()->BeginDoc();//開始一個打印工作
//打印標頭
  Printer()->Canvas->Font->Size=24;
  Printer()->Canvas->Font->Name="黑體";
  Printer()->Canvas->TextOut(x,y," -----服裝請領記錄-----");
  Printer()->Canvas->Font->Size=10;
  Printer()->Canvas->Font->Name="宋體";
  x=190;
  y=y+300;
//打印表格標題行
  Printer()->Canvas->TextOut(x,y," ◇"+Trim(Label12->Caption));
  y=y+80;
  Printer()->Canvas->TextOut(x,y,"┏━━━━━━━━━┳━━━━━━━━━━┳━━┳━━━━━┳━━━━━━━━━━━┳━━━━━━━┓");
  y=y+80;
  Printer()->Canvas->TextOut(x,y," 日 期 品 名 姓 名 部 門 職 務");
  Printer()->Canvas->TextOut(x+1820,y,"數量");
  Printer()->Canvas->TextOut(x,y,"┃");
  Printer()->Canvas->TextOut(x+830,y,"┃");
  Printer()->Canvas->TextOut(x+1742.1,y,"┃");
  Printer()->Canvas->TextOut(x+1991.2,y,"┃");
  Printer()->Canvas->TextOut(x+2491.73,y,"┃");
  Printer()->Canvas->TextOut(x+3487.61,y,"┃");
  Printer()->Canvas->TextOut(x+4151,y,"┃");
  ADOQuery1->First();
//換頁記錄計數器初始化
  int i=0;
//建立循環,如果不是最后一條記錄則進行循環
while(!ADOQuery1->Eof)
{
//計數器加1
  i=i+1;
  y=y+80;
//打印第一條記錄
  Printer()->Canvas->TextOut(x,y,"┣━━━━━━━━━╋━━━━━━━━━━╋━━╋━━━━━╋━━━━━━━━━━━╋━━━━━━━┫");
  y=y+80;
  Printer()->Canvas->TextOut(x,y,"┃"+ADOQuery1->FieldByName("請領日期")->AsString);
  Printer()->Canvas->TextOut(x+830,y,"┃"+ADOQuery1->FieldByName("品名")->AsString);
  Printer()->Canvas->TextOut(x+1742.1,y,"┃"+ADOQuery1->FieldByName("數量")->AsString);
  Printer()->Canvas->TextOut(x+1991.2,y,"┃"+ADOQuery1->FieldByName("請領人")->AsString);
  Printer()->Canvas->TextOut(x+2491.73,y,"┃"+ADOQuery1->FieldByName("部門")->AsString);
  Printer()->Canvas->TextOut(x+3487.61,y,"┃"+ADOQuery1->FieldByName("職務")->AsString);
  Printer()->Canvas->TextOut(x+4151,y,"┃");
  ADOQuery1->Next();
//測試是否該換頁,每30條記錄換一次頁
  if(i%30==0)
  { 
//如果已經是最后一條記錄,則退出循環
    if(ADOQuery1->Eof)
    {
      break;
     }
//如果不是最后一條記錄
  else
  {
//如果該換頁,則打印頁尾和頁碼
    int p=Printer()->PageNumber;
    y=y+80;
    Printer()->Canvas->TextOut(x,y,"┗━━━━━━━━━┻━━━━━━━━━━┻━━┻━━━━━┻━━━━━━━━━━━┻━━━━━━━┛");
    Printer()->Canvas->TextOut(3800,y+200,"頁碼:"+IntToStr(p));
    Printer()->NewPage();
    application->MessageBox("請更換紙張后按確定!","提示",MB_OK);
    x=170;
    y=150;
    Printer()->Canvas->Font->Size=24;
    Printer()->Canvas->Font->Name="黑體";
    Printer()->Canvas->TextOut(x,y," -----服裝請領記錄-----");
    Printer()->Canvas->Font->Size=10;
    Printer()->Canvas->Font->Name="宋體"; 
    x=190; 
    y=y+300; 
    Printer()->Canvas->TextOut(x,y," ◇"+Trim(Label12->Caption)); 
    y=y+80; 
    Printer()->Canvas->TextOut(x,y,"┏━━━━━━━━━┳━━━━━━━━━━┳━━┳━━━━━┳━━━━━━━━━━━┳━━━━━━━┓"); 
    y=y+80; 
    Printer()->Canvas->TextOut(x,y," 日 期 品 名 姓 名 部 門 職 務"); 
    Printer()->Canvas->TextOut(x+1820,y,"數量"); 
    Printer()->Canvas->TextOut(x,y,"┃"); 
    Printer()->Canvas->TextOut(x+830,y,"┃"); 
    Printer()->Canvas->TextOut(x+1742.1,y,"┃"); 
    Printer()->Canvas->TextOut(x+1991.2,y,"┃"); 
    Printer()->Canvas->TextOut(x+2491.73,y,"┃"); 
    Printer()->Canvas->TextOut(x+3487.61,y,"┃"); 
    Printer()->Canvas->TextOut(x+4151,y,"┃");
   }
  }
//換頁結束
}
//打印完全部記錄后,打印表格尾部
y=y+80;
Printer()->Canvas->TextOut(x,y,"┗━━━━━━━━━┻━━━━━━━━━━┻━━┻━━━━━┻━━━━━━━━━━━┻━━━━━━━┛");
//取得總頁數
int pp=Printer()->PageNumber;
//在表格尾部打印頁碼
Printer()->Canvas->TextOut(3800,y+200,"頁碼:"+IntToStr(pp));
Printer()->EndDoc();//結束一個打印工作
ShowMessage("打印完成!謝謝使用!");
}
//異常處理
catch(...)

    ShowMessage("打印出錯!請檢查打印機是否連接好或者電源是否打開及其設置!");
}

上一篇:利用剪貼板實現高速導出數據到Excel

下一篇:啟動外部程序并等待它結束

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 肃南| 涿鹿县| 陵水| 宜春市| 惠来县| 桃园县| 虹口区| 门头沟区| 偃师市| 黔东| 阿拉善右旗| 昌宁县| 垦利县| 牙克石市| 柘荣县| 方正县| 吴忠市| 盐源县| 丽水市| 拉孜县| 琼海市| 永嘉县| 夹江县| 通道| 兴城市| 桑植县| 沙坪坝区| 宕昌县| 海林市| 固原市| 桂林市| 济阳县| 许昌县| 德兴市| 垦利县| 六枝特区| 淳安县| 湖口县| 内黄县| 东莞市| 横山县|