About

     การพิมพ์ลงแบบฟอร์มในขนาดกระดาษที่ไม่มาตรฐาน เช่น ขนาดกระดาษ 6x8นิ้ว (ส่วนใหญ่จะวัดเป็นนิ้ว) ถ้าเป็นบน Win98,Me สามารถกำหนดขนาดกระดาษเป็นแบบ CustomSize ได้โดยกำหนดที่ Printer

    '//---- กรณี Printer Object -----
    Printer.PaperSize = 256
    Printer.Width = 8640 '//--- 1 นิ้ว=1440 Twip
    Printer.Height = 11520 '//--- 1 นิ้ว=1440 Twip

    '//---- กรณี VsView8 -----
    VSPrinter1.PaperSize = 256
    VSPrinter1.PaperWidth = 8640
    VSPrinter1.PaperHeight = 11520
 

     แต่พอมาใช้ WinNT, Win2000, Win2003 และ WinXP กลับไม่มี Papersize = 256 สร้างความเดือดร้อนให้กับ โปรแกรมเมอร์พอสมควร เพราะว่ากระทบรายงานแทบทุกตัว ไม่ว่าจะเป็น Printer Object, VsView8, Crystal report, Active Report หรืออื่นๆ เพราะว่าการพิมพ์ลงฟอร์มบน WinXP นั้น ต้องใช้วิธีสร้างฟอร์มก่อน แล้วนำค่า PaperSize ไปใช้ ตัวอย่างเช่น ถ้าต้องการพิมพ์กระดาษขนาด A4 ค่า PaperSize คือ 9 ถ้าหากสร้างฟอร์มใหม่ค่า PaperSize จะราวๆ 125 ขึ้นไป เป็นค่าไม่มาตรฐาน ผู้ใช้ต้องหาเองอีก

     เมื่อตอน Win2000 ออกมา ไม่ค่อยมีปัญหาเท่าไหร่ เนื่องจากมีจำนวนผู้ใช้จี๊ดเดียว แต่พอ WinXP ออกมานี่ ผู้ใช้เพิ่มขึ้นแพร่หลายอย่างรวดเร็ว ดังนั้นการพิมพ์ฟอร์มบน WinXP จึงเป็นเรื่องสำคัญอย่างหลีกเลี่ยงไม่ได้ ดังนั้นท่านจะต้องรู้วิธีการสร้างฟอร์ม

     เริ่มต้นสร้างฟอร์มบน WinXP
    
     1.ขั้นแรกคือให้ไปที่ Start->Printers and Faxes
     2. คลิกที่เมนู File->Server Properties จะปรากฎดังภาพ


     3. ให้ใส่ชื่อ FormName และขนาดตามต้องการ แล้วคลิก SaveForm

     4. ต่อไปหาเลข PaperSize ถ้าใช้ VsView8 สามารถหาได้โดยใช้โค้ด แต่ถ้าเป็น Printer Object ไม่รู้เหมือนกันใช้อะไร

    For i = 1 To 255
       If VSPrinter1.PaperSizes(i) = True Then
          Debug.Print i '//--- ถ้า Papersize สามารถพิมพ์ได้
       End If
    Next  

     การสร้างฟอร์มโดยใช้ VB6

     ต้องไปอ่านวิธีการสร้างได้ที่เวบ http://support.microsoft.com/default.aspx?scid=kb;en-us;282474

     ผู้เขียนได้เขียนโมดูลสำหรับสร้างฟอร์มบน XP และ หาเลข PaperSize ชื่อว่า GetPaperSize เป็นโปรแกรมที่ทำขึ้นเพื่อให้การพิมพ์ลงแบบฟอร์มบน WinXP เป็นเรื่องง่ายๆ แต่ผู้เขียนจะสงวนแจกให้เฉพาะผู้ที่สนับสนุน Tgmask+Tggrid

 
Contact