QuickReport在Windows2000中自訂報表? |
|
scottliou
版主 發表:16 回覆:56 積分:47 註冊:2002-03-14 發送簡訊給我 |
|||
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 在Windows2000中QuickReport無法使用自訂報表的問題(半切中一刀) 在許多討論區皆有許多討論但仍無法有正確的解答!! 站長....親愛的站長是否有辦法解決呢? ~~~~~~~~~~~~~~~~ 有夢想最美......嗯!叫得這麼親切害我以為您是女生,哈哈! 您的問題我也曾遇過,我有很多種報表的解決方案,大多是自己去控制印表機, 也就是不用Quick Report也不用 xxx-Report!以後有空再發表我的作法! 我先回答您的問題: 1.Windows 2000 或 NT 4.0都無法在印表機中設定自訂紙張大小,只能選A4/B4.. 2.要在Windows 2000/NT系列設定印表機紙張大小,要先新增一個紙張格式,如下: 開始->設定->印表機->檔案(F)->伺服器內容->格式->建立新格式打勾-> 格式描述設為"中一刀"->選好紙張大小(注意用英制高度5.5英寸)->儲存格式 如此就新增了一個紙張格式叫"中一刀"(5.5寸) 3.再來要將預設印表機的紙張設為"中一刀" 開始->設定->印表機->在預設打勾的印表按滑鼠右鍵->列印喜好設定(T)-> 紙張格式->進階->紙張大小->選"中一刀"->確定 如此就將預設印表的列印格式設為"中一刀" 4.進入程式將QuickReport的Paper Size設定為Default,不可設為Custom 5.大功告成 QutickRep1.Preview;就會看到中一刀的大小版面! 或許以上您已早就知道,但還是有其它問題,就請再上網發問吧! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
||
tbn
一般會員 發表:6 回覆:9 積分:3 註冊:2002-05-26 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 關於此問題,個人有點小小的疑問,雖然此法可解,但是否侷限於某一固定印表機?每次同一程式會因環境改變而重新設定,而不是由程式去作控制或設定,如此是否有失程式設計原意?!在深度論壇的CC兄,已經有貼出可用程式碼控制Win2000紙張格式。等深度論壇恢復再用WinSpool搜尋看看。
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
站長轉貼自 深度論壇 的 cc 發言文章:
先在專案新增一個新單元(名為 WinSpool2), 因為 Delphi 5 無宣告 GetDefaultPrinter (取得預設印表機). unit WinSpool2; interface uses Windows, WinSpool; function GetDefaultPrinter(pszBuffer : PChar; var pcchBuffer : DWORD) : BOOL; stdcall; implementation function GetDefaultPrinter; external winspl name 'GetDefaultPrinterA'; end. // 自動設定紙張大小程式 procedure TForm1.Button6Click(Sender: TObject); var _PPrinterInfo2 : PPrinterInfo2; pPrinterName : PChar; sPrinterName, sFormName : String; hPrinter : THandle; cbNeeded : DWORD; dwBufferSize : DWORD; begin sFormName := 'Letter'; // 取得預設印表機名稱 if not GetDefaultPrinter(nil, dwBufferSize) then begin case GetLastError of // 即使呼叫成功也會有此一錯誤(Buffer 不足), 我只是要取得 Buffer 大小所以忽略此錯誤訊息 ERROR_INSUFFICIENT_BUFFER : ; ERROR_FILE_NOT_FOUND : raise Exception.Create('無預設印表機.'); else raise Exception.Create('GetDefaultPrinter Error, Code : ' IntToStr(GetLastError)); end; end; pPrinterName := nil; try GetMem(pPrinterName, dwBufferSize); GetDefaultPrinter(pPrinterName, dwBufferSize); sPrinterName := StrPas(pPrinterName); // <-- 預設印表機名稱 finally if pPrinterName <> nil then begin FreeMem(pPrinterName, dwBufferSize); pPrinterName := nil; end; end; // 設定印表機的紙張大小名稱 if not WinSpool.OpenPrinter(PChar(sPrinterName), hPrinter, nil) then raise Exception.Create('OpenPrinter Error, Code : ' IntToStr(GetLastError)); WinSpool.GetPrinter(hPrinter, 2, nil, 0, @cbNeeded); _PPrinterInfo2 := nil; try GetMem(_PPrinterInfo2, cbNeeded); WinSpool.GetPrinter(hPrinter, 2, _PPrinterInfo2, cbNeeded, @cbNeeded); with _PPrinterInfo2^.pDevMode^ do begin StrLCopy(dmFormName, PChar(sFormName), CCHFORMNAME - 1); //dmPaperSize := PaperSizeID(sPrinterName, sFormName); dmFields := DM_FORMNAME; // DM_PAPERSIZE end; // 不知為何 SetPrinter 一定會有錯誤 -> GetLastError = ERROR_ACCESS_DENIED // (即使以 Administrator 身份執行), 所以先把 raise 註解掉, Who could explain it for me ? Thanks. if not WinSpool.SetPrinter(hPrinter, 2, _PPrinterInfo2, 0) then ; //raise Exception.Create('SetPrinter Error, Code : ' IntToStr(GetLastError)); finally if _PPrinterInfo2 <> nil then FreeMem(_PPrinterInfo2); _PPrinterInfo2 := nil; end; end; 一般設定紙張大小要在印表機圖示上按 MOUSE 右鍵, 點選列印喜好設定 -> 進階 進入設定視窗設定紙張大小, 上列程式可以以程式設定之(永久設定). 您可以先以手動設定紙張大小為 A3, 在執行程式後查看紙張大小, 喜好設定中的~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
||
tbn
一般會員 發表:6 回覆:9 積分:3 註冊:2002-05-26 發送簡訊給我 |
|||
panda566
一般會員 發表:3 回覆:4 積分:1 註冊:2002-03-25 發送簡訊給我 |
|||
cocodi
一般會員 發表:21 回覆:65 積分:17 註冊:2002-06-27 發送簡訊給我 |
|||
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
有關win2000 winxp要自訂非正式的報表列印 提供最簡單的方式
直接打電話問EPSON就有工程師告訴你如何設定 以前再深度歷險已有說明
如果你要由程式去控制 我想可能會很麻煩
1 各印表機之最小規格不一
2 轉距也不同
不過以前我用EPSON LQ300
印發票紙張大小10.0.1(寬)*14.00(高)與其它印表機也無問題
不過真正的紙張大小為07.0.1(寬)*14.00(高)因為EPSON LQ300最小10.0.110.0.1(寬)
不過你一定不可以使用系統內建的印表機驅動程式 否則將會出現 設定流程無誤
但是結果確錯誤(此乃EPSON工程師告知)請一定要注意
如果你要印A4紙張我想機會滿少的
pos端印印發票紙張大小
管理端只要不手動設定(伺服器內容)那不就是符合正規紙張大小
除非你的軟體全部都只在單機使用 那就是user麻煩了 參考看看此為vb範例 不過DELPHI請自行去32 Bit Delphi 深度歷險有元件可以下載不知道站長有沒有此元件可以分享 週邊設備程式設計討論區
印表機中斷 int 17H 有哪些參數
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=18968 發表人 - jackkcg 於 2002/07/06 18:23:38
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
||
lukyshu
中階會員 發表:16 回覆:120 積分:93 註冊:2002-04-19 發送簡訊給我 |
fast report可以解決這個問題喔!
當然需要點修改啦!
不過是可行的!
引言: 有關win2000 winxp要自訂非正式的報表列印 提供最簡單的方式 直接打電話問EPSON就有工程師告訴你如何設定 以前再深度歷險已有說明 如果你要由程式去控制 我想可能會很麻煩 1 各印表機之最小規格不一 2 轉距也不同 不過以前我用EPSON LQ300 印發票紙張大小10.0.1(寬)*14.00(高)與其它印表機也無問題 不過真正的紙張大小為07.0.1(寬)*14.00(高)因為EPSON LQ300最小10.0.110.0.1(寬) 不過你一定不可以使用系統內建的印表機驅動程式 否則將會出現 設定流程無誤 但是結果確錯誤(此乃EPSON工程師告知)請一定要注意 如果你要印A4紙張我想機會滿少的 pos端印印發票紙張大小 管理端只要不手動設定(伺服器內容)那不就是符合正規紙張大小 除非你的軟體全部都只在單機使用 那就是user麻煩了 參考看看此為vb範例 不過DELPHI請自行去32 Bit Delphi 深度歷險有元件可以下載不知道站長有沒有此元件可以分享 週邊設備程式設計討論區 印表機中斷 int 17H 有哪些參數 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=18968 發表人 - jackkcg 於 2002/07/06 18:23:38
------
台灣 Delphi 俱樂部 PostgreSQL、FastReport專業討論區 http://www.delphi.club.tw |
||
天外來客
初階會員 發表:22 回覆:199 積分:44 註冊:2001-11-27 發送簡訊給我 |
您的問題我也曾遇過,我有很多種報表的解決方案,大多是自己去控制印表機,
也就是不用Quick Report也不用 xxx-Report!以後有空再發表我的作法! 我先回答您的問題:
1.Windows 2000 或 NT 4.0都無法在印表機中設定自訂紙張大小,只能選A4/B4..
2.要在Windows 2000/NT系列設定印表機紙張大小,要先新增一個紙張格式,如下:
開始->設定->印表機->檔案(F)->伺服器內容->格式->建立新格式打勾->
格式描述設為"中一刀"->選好紙張大小(注意用英制高度5.5英寸)->儲存格式
如此就新增了一個紙張格式叫"中一刀"(5.5寸)
3.再來要將預設印表機的紙張設為"中一刀"
開始->設定->印表機->在預設打勾的印表按滑鼠右鍵->列印喜好設定(T)->
紙張格式->進階->紙張大小->選"中一刀"->確定
如此就將預設印表的列印格式設為"中一刀"
4.進入程式將QuickReport的Paper Size設定為Default,不可設為Custom
5.大功告成 QutickRep1.Preview;就會看到中一刀的大小版面! 或許以上您已早就知道,但還是有其它問題,就請再上網發問吧! ~~~Delphi K.Top討論區站長~~~
[/quote] 想請問一下在win98可以解決這樣報表的問題嗎?
|
||
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|||
sunnylu
一般會員 發表:12 回覆:24 積分:7 註冊:2002-07-09 發送簡訊給我 |
|||
sunnylu
一般會員 發表:12 回覆:24 積分:7 註冊:2002-07-09 發送簡訊給我 |
|||
sunnylu
一般會員 發表:12 回覆:24 積分:7 註冊:2002-07-09 發送簡訊給我 |
|||
horjaer
一般會員 發表:2 回覆:3 積分:1 註冊:2002-07-11 發送簡訊給我 |
|||
rovi
一般會員 發表:2 回覆:10 積分:12 註冊:2002-05-08 發送簡訊給我 |
>在Windows2000中QuickReport無法使用自訂報表的問題(半切中一刀)
>在許多討論區皆有許多討論但仍無法有正確的解答!! 一、程式開發環境
1.工作平台:Windows 2000
2.工作環境:1024*768、小型字、高彩以上
3.開發工具:Delphi 6.0, Update 2
4.報表工具:QuickReport 3.51
二.列表機:Epson LQ-2080C
三.QuickRep.PaperSize設定為Custom Size,
中一刀: width=216.00, Length=139.5 註:1.列表機不用任何設定
2.雷射列表機不能印中一刀
|
||
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
http://forum.vclxx.org/topic.php?TOPIC_ID=9510&FORUM_ID=5&CAT_ID=2&Topic_Title=½аݦbWin98¹B§@¥¿±`¤§QuickRep³øª¦ÜWinMe/Win2K¹J¨줧°ÝÃD¡A¦p¦ó¸ѨM?&Forum_Title=Database
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
||
天外來客
初階會員 發表:22 回覆:199 積分:44 註冊:2001-11-27 發送簡訊給我 |
|||
isthatu
初階會員 發表:80 回覆:47 積分:25 註冊:2002-06-26 發送簡訊給我 |
引言: win98不是可以自訂紙張大小嗎? win98可以自訂紙張大小, 可是我試過還是沒有用(還是我用錯方式了) 我在報表設計的時候,是用custom size 設定 為中一刀的格式,然後再印表機上設定一張 中一刀大小格式的紙張,可是印表機(espon LQ1050C) 還是列印成Letter的大小,也就是說會多跳一頁(中一刀的大小) 我後來重新設定一次,將印表機先設定一張中一刀的格式 在Report中設定為Default Size 這樣就可以了我在win2000中 利用 PrinterSetupDialog1.Execute; 去選擇網路印表機B 及設定相關紙張大小 最後利用ReportBuilder 中 ppViewer1.Report.DeviceType := dtPrinter; ppViewer1.Report.Print; ^^^^^^^^^^^^^^^^^^^^^^^ 結果出來的報表根本不是從我設定的印表機B出來 而是從電腦預設的印表機A 出來 當然紙張大小也沒有依我在PrinterSetupDialog設定中出來 這是怎麼回事勒 BCDEFHIJKLMNOPQRSTUVWXZ BCDEFHIJKLMNOPQRSTUVWXZ
------
BCDEFHIJKLMNOPQRSTUVWXZ |
||
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
isthatu 網友 這個問題 已經有人問了粉多次 從2000開始到xp庵也看到粉多遍了 哈哈 建議至 報表設計開發討論區(Delphi) 去看看 相關問題
【問題】在Windows 2000 下 Qreport 的 Custom size 問題
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=25007
【BCB】【問題】BMP檔列印,不同的印表機,結果不相同.
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26249
【問題】若200張就差了1cm了對一些特別的報表來說 就是不能差這麼大的距離請問先進們有沒有方法處理這種問題
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26844
【問題】有沒有能在程式中由設計者寫程式然後使用者只要按列印而不用去再設紙張格式或印表機的方法呢
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26727
QuickReport在Windows2000中自訂報表?
http://delphi.ktop.com.tw/topic.php?topic_id=237
請查閱已回應之相關資料 也許你會了解更多 *********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together!
希望能大家敞開心胸,將知識寶庫結合一起
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
||
JamesJuan
中階會員 發表:2 回覆:76 積分:80 註冊:2003-04-08 發送簡訊給我 |
這個問題我想很多人都有遇過,我也花了許多時間研究 QuickReport
到底有什麼問題,得出來的心得如下: QR 在 Windows2000 中自訂報表有兩方面的問題: 1.QuickReport 並不支援在 W2k、WXP 的環境下使用自訂報表
(像Windows98時不用特別設定或選擇印表機即可),這部分
需要修改 QuickReport 的 SourceCode,類似前面一位「領
航天使」的改法,如此才有可能使 QuickReport 支援自訂
報表,而且列印時不需依據不同紙張大小做選擇,也不需要
事先設定「伺服器內容」。
我測試的版本為 Delphi 5.0 QuickReport 3.62 Professional 2.即便修改上述 Source Code,列印時依然會跳頁不準,尤其是在使用
網路印表機時,這部分微軟網站上有詳細的說明,詳見:
http://support.microsoft.com/default.aspx?scid=kb;ZH-TW;q282474#1
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |