全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:10858
推到 Plurk!
推到 Facebook!

QuickReport在Windows2000中自訂報表?

 
scottliou
版主


發表:16
回覆:56
積分:47
註冊:2002-03-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-03-14 11:19:39 IP:61.70.xxx.xxx 未訂閱
在Windows2000中QuickReport無法使用自訂報表的問題(半切中一刀) 在許多討論區皆有許多討論但仍無法有正確的解答!! 站長....親愛的站長是否有辦法解決呢? ~~~~~~~~~~~~~~~~ 有夢想最美......
------
~~~~~~~~~~~~~~~~
有夢想最美......
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-03-14 12:29:12 IP:192.168.xxx.xxx 未訂閱
引言: 在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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-06-04 09:56:03 IP:210.243.xxx.xxx 未訂閱
關於此問題,個人有點小小的疑問,雖然此法可解,但是否侷限於某一固定印表機?每次同一程式會因環境改變而重新設定,而不是由程式去作控制或設定,如此是否有失程式設計原意?!
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-06-04 11:01:18 IP:203.204.xxx.xxx 未訂閱
引言: 關於此問題,個人有點小小的疑問,雖然此法可解,但是否侷限於某一固定印表機?每次同一程式會因環境改變而重新設定,而不是由程式去作控制或設定,如此是否有失程式設計原意?!
在深度論壇的CC兄,已經有貼出可用程式碼控制Win2000紙張格式。等深度論壇恢復再用WinSpool搜尋看看。
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-06-04 21:57:37 IP:192.168.xxx.xxx 未訂閱
站長轉貼自 深度論壇 的 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-06-14 13:48:07 IP:210.243.xxx.xxx 未訂閱
謝謝你!
panda566
一般會員


發表:3
回覆:4
積分:1
註冊:2002-03-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-06-18 09:05:04 IP:211.72.xxx.xxx 未訂閱
各位大大安安 上述的方法, 可以自由的控制紙張格式沒錯... 但.. 各位不知有沒有遇到, 雖設定為中一刀紙張格式, 跳頁卻是跳全頁 環境是 > 希望各位善心人士可以幫幫偶,
cocodi
一般會員


發表:21
回覆:65
積分:17
註冊:2002-06-27

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-07-06 14:34:10 IP:61.170.xxx.xxx 未訂閱
有位朋有的作法是直接將QR-form OUTPUT 給印表機,根本不用QR 內定輸出,據說沒問題,但我沒TRY過 ,你可以試看看
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-07-06 18:17:44 IP:61.70.xxx.xxx 未訂閱
有關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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-07-07 14:50:50 IP:210.85.xxx.xxx 未訂閱
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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-07-09 01:20:05 IP:61.59.xxx.xxx 未訂閱
您的問題我也曾遇過,我有很多種報表的解決方案,大多是自己去控制印表機, 也就是不用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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-07-09 07:04:41 IP:192.168.xxx.xxx 未訂閱
引言: 想請問一下在win98可以解決這樣報表的問題嗎?
win98不是可以自訂紙張大小嗎? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
sunnylu
一般會員


發表:12
回覆:24
積分:7
註冊:2002-07-09

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-07-09 09:02:38 IP:211.72.xxx.xxx 未訂閱
[/quote] win98不是可以自訂紙張大小嗎? ~~~Delphi K.Top討論區站長~~~ [/quote] win98可以自訂紙張大小, 可是我試過還是沒有用(還是我用錯方式了) 我在報表設計的時候,是用custom size 設定 為中一刀的格式,然後再印表機上設定一張 中一刀大小格式的紙張,可是印表機(espon LQ1050C) 還是列印成Letter的大小,也就是說會多跳一頁(中一刀的大小)
sunnylu
一般會員


發表:12
回覆:24
積分:7
註冊:2002-07-09

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-07-09 15:57:30 IP:211.72.xxx.xxx 未訂閱
win98不是可以自訂紙張大小嗎? win98可以自訂紙張大小, 可是我試過還是沒有用(還是我用錯方式了) 我在報表設計的時候,是用custom size 設定 為中一刀的格式,然後再印表機上設定一張 中一刀大小格式的紙張,可是印表機(espon LQ1050C) 還是列印成Letter的大小,也就是說會多跳一頁(中一刀的大小) 我後來重新設定一次,將印表機先設定一張中一刀的格式 在Report中設定為Default Size 這樣就可以了
sunnylu
一般會員


發表:12
回覆:24
積分:7
註冊:2002-07-09

發送簡訊給我
#15 引用回覆 回覆 發表時間:2002-07-10 10:13:44 IP:61.59.xxx.xxx 未訂閱
在win98的環境下測試,自訂報表大小(中一刀) 那請問一下是不是在印之前就要選擇印表機了 因為已經將報表預覽再選擇印表機 這樣就會有問題
horjaer
一般會員


發表:2
回覆:3
積分:1
註冊:2002-07-11

發送簡訊給我
#16 引用回覆 回覆 發表時間:2002-07-19 00:21:04 IP:61.70.xxx.xxx 未訂閱
關於跳頁~~會跳一頁..... 應該是你沒把印表機的進紙改成.....連續報表 才會這樣
rovi
一般會員


發表:2
回覆:10
積分:12
註冊:2002-05-08

發送簡訊給我
#17 引用回覆 回覆 發表時間:2002-07-19 17:09:50 IP:211.75.xxx.xxx 未訂閱
>在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

發送簡訊給我
#18 引用回覆 回覆 發表時間:2002-07-22 02:00:01 IP:61.70.xxx.xxx 未訂閱
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

發送簡訊給我
#19 引用回覆 回覆 發表時間:2002-09-11 22:08:00 IP:61.70.xxx.xxx 未訂閱
我的方法: 1. 將W2K 之印表機伺服器內容建立Custom之格式(規格自訂). 2. 將LQ-680之預設值選為Custom,紙張來源選 TRACKER. 3. QREP 之報表格式設為Custom 4. LQ-670 或其他如 LQ-570 請使用 LQ-2017 之驅動程式(EPSON 提供的資訊) 5. 還有問題 Mail to -> cwsoft@giga.net.tw 祝好運!
isthatu
初階會員


發表:80
回覆:47
積分:25
註冊:2002-06-26

發送簡訊給我
#20 引用回覆 回覆 發表時間:2003-03-26 18:35:29 IP:211.21.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#21 引用回覆 回覆 發表時間:2003-03-27 21:14:26 IP:61.221.xxx.xxx 未訂閱
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

發送簡訊給我
#22 引用回覆 回覆 發表時間:2003-04-08 15:58:44 IP:61.222.xxx.xxx 未訂閱
這個問題我想很多人都有遇過,我也花了許多時間研究 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
系統時間:2024-05-03 13:57:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!