不同的 Datawindow 有時候需要按本身特性分配到不同的打印機,比方說把銷售報表印到 A4 雷射打印機、標籤分配到熱感標籤打印機、一套幾份的發貨單要印到 Dot Matrix 打印機,為方便使用及減少用戶選錯打印機的機會,我們可以把哪個DW打印到哪台打印機的設定寫到代碼中。
這裏介紹幾個相關的函數:
PrintGetPrinters() 取系統打印機清單( 注意有 s )
PrintGetPrinter() 取預設打印機
PrintSetPrinter() 設預設打印機
步驟大概如下:
1. 以PrintGetPrinter() 取得當前預設打印機(ls_original_printer)
2. 從數據庫或 ini 取得該用的打印機名稱放到變量(ls_target_printer)
3. 以 PrintGetPrints() 取系統打印機清單,與前面的變量(ls_target_printer)對比,確定該用的打印機在清單中
4. 以 PrintSetPrinter() 把變量設為預設打印機(ls_target_printer)
5. 以 DW.Print() 到預設打印機打印
6. 以 PrinterSetPrint() 還原本來的預設打印機(ls_original_printer)
關於 DW.Print(True, True) 有一點要注意,第二個 True 用於調用 Windows 的 Print dialog box,只要在這個box 裏面點過「OK」或「確認」之類的,她都會把當時的設定套用到下一個 print job 中,如果你的 DW 在打印前曾經以代碼調整過紙張類型、長濶高之類的都會被剛在 Print dialog box 確認的覆蓋,如果代碼設定為 A4 size,但剛的 Print dialog box 中的是 Letter size,最終打印使用的就會是後者的 Letter size。