取Excel的紙張大小 |
缺席
|
hung17
一般會員 ![]() ![]() 發表:1 回覆:2 積分:0 註冊:2009-05-21 發送簡訊給我 |
|
hung17
一般會員 ![]() ![]() 發表:1 回覆:2 積分:0 註冊:2009-05-21 發送簡訊給我 |
|
sryang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
Excel 的紙張編號在 Excel2000.pas 或是 ExcelXp.pas 裡面
Library path 要加上 $(DELPHI)\Ocx\Servers 檔案內搜尋 XlPaperSize 就有了 如果紙張編號大於或等於 xlPaperUser ($00000100) 者就是自訂紙張 由自訂紙張名稱取得自訂紙張大小可以使用以下程式 需 uses Printers, WinSpool [code delphi] function GetPaperSize(PaperName: String; out PaperSize: TSize): Boolean; var PrintDevice, PrintDriver, PrintPort: array[0..255] of Char; hDMode: THandle; hPrinter: THandle; FormInfoArr: array[0..15] of TFormInfo1; byteNeeded: Cardinal; begin Result := False; Printer.GetPrinter(PrintDevice, PrintDriver, PrintPort, hDMode); OpenPrinter(PrintDevice, hPrinter, nil); if hPrinter = 0 then Exit; if GetForm(hPrinter, PChar(PaperName), 1, @FormInfoArr, Sizeof(FormInfoArr), byteNeeded) then begin PaperSize.cx := FormInfoArr[0].Size.cx; PaperSize.cy := FormInfoArr[0].Size.cy; Result := True; end; ClosePrinter(hPrinter); end; [/code]
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
hung17
一般會員 ![]() ![]() 發表:1 回覆:2 積分:0 註冊:2009-05-21 發送簡訊給我 |
先感謝 sryang 回答我的問題
sryang 應該誤會我的意思,我想抓取的紙張編號剛好就是自定紙張 所以無法在 Excel2000.pas 這裡得到 sryang 提供的程式碼是抓取紙張的長跟寬,並不是我想要的紙張編號 不過也學到怎樣抓取紙張的長跟寬 以下是我在其他網站找到的程式碼 已可以抓到我想到的自訂紙張編號 但,不知會什會多出最後一組編號 [code delphi] var I, nRet: Integer; nMode: THandle; aName, aPort, aDriver: array [0..79] of Char; aPaperNames: array of array[0..63] of Char; aPapers: array of Word; AList: TStrings ; begin Assert(AList <> nil); Printer.GetPrinter(aName, aDriver, aPort, nMode); nRet := WinSpool.DeviceCapabilitiesA(aName, aPort, DC_PAPERS, nil, nil); Edit5.Text := IntToStr(nRet) ; if nRet < 0 then Exit; SetLength(aPaperNames, nRet); SetLength(aPapers, nRet); WinSpool.DeviceCapabilities(aName, aPort, DC_PAPERNAMES, @aPaperNames[0], nil); WinSpool.DeviceCapabilities(aName, aPort, DC_PAPERS, @aPapers[0], nil); ListBox2.Items.Clear ; for i := 1 to nRet do begin ListBox2.Items.Add(IntToStr(i) '. ' aPaperNames[i] '-' IntToStr(aPapers[I])); end ; [/code] |
Delhpi
一般會員 ![]() ![]() 發表:9 回覆:14 積分:4 註冊:2008-07-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |