線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2365
推到 Plurk!
推到 Facebook!

C++Builder編程中動態更改自定義打印紙張

 
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-08-16 16:09:37 IP:61.218.xxx.xxx 未訂閱

C Builder編程中動態更改自定義打印紙張

作者:編程聯盟 因網上只有Delphi例子本人在用BCB編寫時發現有一些例子不能用, 所以一生氣就索性查了查資料自己寫了,怕網友們在用編程時也遇見此類情況, 就馬上傳了上來。
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
char *ADevice, *ADriver, *APort;
THandle DeviceMode;
PDeviceMode DevMode;
int length,width;
length=1400;
width=2410;//設定自定義紙張的尺寸單位為0.1毫米
ADevice =new char[100];
ADriver =new char[100];
APort =new char[100];
//獲取打印機
Printer()->GetPrinter(ADevice, ADriver, APort,DeviceMode);
//獲取PDevMode結構
DevMode =(_devicemodeA*) GlobalLock((void *)DeviceMode);
//設定可以修改的值
DevMode->dmFields = DevMode->dmFields|DM_PAPERSIZE;
DevMode->dmFields = DevMode->dmFields|DM_PAPERLENGTH;
DevMode->dmFields = DevMode->dmFields|DM_PAPERWIDTH;
//設定要修改的值
DevMode->dmPaperSize=DMPAPER_USER;//設為自定義紙張
DevMode->dmPaperLength=length;
DevMode->dmPaperWidth=width;    //測試打印
Printer()->BeginDoc();
TextOut(Printer()->Handle, 0, 0, "-----------------",17);
Printer()->NewPage();
TextOut(Printer()->Handle, 0, 0, "                  ",18);
Printer()->NewPage();
Printer()->EndDoc();
}
聯盟----Visita網站http://www.vista.org.tw ---[ 發問前請先找找舊文章 ]---
鈴鐺
初階會員


發表:33
回覆:81
積分:35
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-09-09 14:39:03 IP:192.72.xxx.xxx 未訂閱
此人漏寫了, 最後要 GlobalUnlock(hDMode);
yunghant
一般會員


發表:7
回覆:9
積分:3
註冊:2002-10-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-18 14:39:37 IP:218.32.xxx.xxx 未訂閱
請問一下, 我嘗試加一個 BUtton 使用 Edit1->Text 更改如下二數值, 看看是否能隨意變更列印, 按 Button1 時都是同樣的列印結果, 把程式 Close 再重新執行, 才能正確的更改數值, 及列印結果, 不知如何可不離開程式時 能按 Button1 就能使用多變化式的列印方式謝謝。 // length=1400; // width=2410;//設定自定義紙張的尺寸單位為0.1毫米
yunghant
一般會員


發表:7
回覆:9
積分:3
註冊:2002-10-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-26 15:10:05 IP:218.32.xxx.xxx 未訂閱
最近剛研究 DLL 的寫法, 發現可以使用呼叫 DLL 的方式變更設定 的數值, 就是列印時呼叫 DLL , 列印完後想更改時退出 DLL 程式, 再重新去進入 DLL 就可以變更列印的紙張格式。
ADDi
一般會員


發表:1
回覆:7
積分:1
註冊:2004-10-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-08 12:15:10 IP:61.56.xxx.xxx 未訂閱
謝謝您的提供 那如何以程式載入某種特定的紙呢 如"A4", "Letter" 還有自訂的紙張名稱如"出貨單1" 目前可以設定printer 的長寬 但無法以程式取出被選定的某張紙的長寬~~
系統時間:2017-12-13 11:20:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!