package slipapp; import java.awt.Color; import java.awt.Dimension; import java.awt.print.PageFormat; /** * * @author Doys */ public class PrintingInterfaceTable { String urlXmlData = ""; String urlXmlMaster = ""; String urlXmlDetail = ""; public Dimension frameSize; public PrintingInterfaceTable(String urlXmlData, String urlXmlMaster, String urlXmlDetail) { this.urlXmlData = urlXmlData; this.urlXmlMaster = urlXmlMaster; this.urlXmlDetail = urlXmlDetail; frameSize = new Dimension(); } public Printing init(RunMode mode) throws Exception { int rowTest = -1; XmlHandle xmlMaster = new XmlHandle(urlXmlMaster); xmlMaster.setRowCount("PRINTING_NAME"); rowTest = xmlMaster.getRowCount(); rowTest = -1; XmlHandle xmlDetail = new XmlHandle(urlXmlDetail); xmlDetail.setRowCount("PRINTING_NAME"); rowTest = xmlDetail.getRowCount(); rowTest = -1; if (mode == RunMode.TEST) { this.urlXmlData = xmlMaster.getItemStringTryCatch(0, "URL_XMLTEST"); } XmlHandle xmlData = new XmlHandle(this.urlXmlData); xmlData.setRowCount(xmlMaster.getItemStringTryCatch(0, "PRIMARY_COLUMN")); rowTest = xmlData.getRowCount(); rowTest = -1; frameSize.setSize(xmlMaster.getItemIntTryCatch(0, "TEST_WIDTH"), xmlMaster.getItemIntTryCatch(0, "TEST_HEIGHT")); Printing prt = new Printing(xmlData); //จำนวนแถวต่อ 1 หน้ากระดาษ prt.rowPerPage = xmlMaster.getItemIntTryCatch(0, "ROW_PERPAGE", 1); //ค่าเกี่ยวกับ XML ใส่ฟิวส์อะไรก็ได้ที่ไม่มีค่าเป็น NULL prt.primaryColumn = xmlMaster.getItemStringTryCatch(0, "PRIMARY_COLUMN"); //เปลี่ยนค่า 3 ค่านี้ได้กรณีมีจำนวน object เกินที่กำหนด (แต่ไม่ควรลดค่า) prt.maxPrintingHead = xmlDetail.getRowCount() + 1; prt.maxPrintingDetail = prt.maxPrintingHead; prt.maxPrintingFoot = prt.maxPrintingHead; //ตั้งค่าตามต้องการ ทำงานตอน runtime prt.autoPrint = xmlMaster.getItemIntTryCatch(0, "AUTO_PRINT", 0) == 1; prt.autoCloseDlg = xmlMaster.getItemIntTryCatch(0, "AUTO_CLOSE", 0) == 1; //ชื่อเครื่องปริ้นสำหรับสั่งพิมพ์ สามารถใส่ได้หลายชื่อโดยใช้เครื่องหมาย , คั่น โปรแกรมจะหาเครื่องจากชื่อแรกก่อน ถ้าหาไม่เจอจะใช้ชื่อถัดไป prt.printerName = xmlMaster.getItemStringTryCatch(0, "PRINTER_NAMES"); //prt.printSize = PrintSize.A4; prt.paperWidth = xmlMaster.getItemDoubleTryCatch(0, "paper_width"); prt.paperHeight = xmlMaster.getItemDoubleTryCatch(0, "paper_height"); prt.frameWidth = xmlMaster.getItemDoubleTryCatch(0, "TEST_WIDTH"); prt.frameHeight = xmlMaster.getItemDoubleTryCatch(0, "TEST_HEIGHT"); //เรียกฟังก์ชั่น preAccept สำหรับตั้งค่าเบื้องต้น prt.preAccept(); //ตั้งค่าตามต้องการ prt.head.height = xmlMaster.getItemFloatTryCatch(0, "HEAD_HEIGHT", 1); prt.detail.height = xmlMaster.getItemFloatTryCatch(0, "DETAIL_HEIGHT", 1); prt.font.name = xmlMaster.getItemStringTryCatch(0, "FONT_NAME", "Tahoma"); prt.font.size = xmlMaster.getItemIntTryCatch(0, "FONT_SIZE", 10); String bius = xmlMaster.getItemStringTryCatch(0, "FONT_BIUS").toUpperCase(); if (bius.indexOf("B") >= 0) { prt.font.b = true; } if (bius.indexOf("I") >= 0) { prt.font.i = true; } if (bius.indexOf("U") >= 0) { prt.font.u = true; } if (bius.indexOf("S") >= 0) { prt.font.s = true; } prt.font.color = Color.decode(xmlMaster.getItemStringTryCatch(0, "FONT_COLOR", "#000000")); if (xmlMaster.getItemIntTryCatch(0, "ORIENTATION", 1) == 1) { prt.orientation = PageFormat.PORTRAIT; } else { prt.orientation = PageFormat.LANDSCAPE; } //ประกาศตัวแปรสำคัญสำหรับการวาง column ต่างๆ PrintColumn pc = null; for (int i = 0; i < xmlDetail.getRowCount(); i++) { pc = new PrintColumn(xmlDetail.getItemStringTryCatch(i, "COLUMN_NAME")); if (!xmlDetail.getItemStringTryCatch(i, "COLUMN_DETAIL").trim().equals("")) { pc.column = xmlDetail.getItemStringTryCatch(i, "COLUMN_DETAIL"); } pc.setPosition(xmlDetail.getItemIntTryCatch(i, "POSITION")); pc.text = xmlDetail.getItemStringTryCatch(i, "TEXT_DETAIL").trim(); pc.setColumnType(xmlDetail.getItemStringTryCatch(i, "COLUMN_TYPE").toUpperCase()); pc.setFormat(xmlDetail.getItemStringTryCatch(i, "TEXT_FORMAT").toUpperCase()); pc.decDigit = xmlDetail.getItemIntTryCatch(i, "DEC_DIGIT", -1); pc.top = xmlDetail.getItemFloatTryCatch(i, "POINT_TOP"); pc.left = xmlDetail.getItemFloatTryCatch(i, "POINT_LEFT"); pc.width = xmlDetail.getItemFloatTryCatch(i, "POINT_WIDTH"); pc.height = xmlDetail.getItemFloatTryCatch(i, "POINT_HEIGHT"); pc.setAlign(xmlDetail.getItemStringTryCatch(i, "ALIGN").toUpperCase()); pc.setValign(xmlDetail.getItemStringTryCatch(i, "VALIGN").toUpperCase()); if (!xmlDetail.getItemStringTryCatch(i, "BG_COLOR").trim().equals("")) { pc.bgColor = Color.decode(xmlDetail.getItemStringTryCatch(i, "BG_COLOR")); } if (!xmlDetail.getItemStringTryCatch(i, "LINE_COLOR").trim().equals("")) { pc.lineColor = Color.decode(xmlDetail.getItemStringTryCatch(i, "LINE_COLOR")); } pc.font.name = xmlDetail.getItemStringTryCatch(i, "FONT_NAME").trim(); pc.font.size = xmlDetail.getItemIntTryCatch(i, "FONT_SIZE"); if (!xmlDetail.getItemStringTryCatch(i, "FONT_COLOR").trim().equals("")) { pc.font.color = Color.decode(xmlDetail.getItemStringTryCatch(i, "FONT_COLOR")); } if (!xmlDetail.getItemStringTryCatch(i, "FONT_BIUS").trim().toUpperCase().equals("DEFAULT")) { String bius2 = xmlDetail.getItemStringTryCatch(i, "FONT_BIUS").toUpperCase(); if (bius2.indexOf("B") >= 0) { pc.font.b = true; } if (bius2.indexOf("I") >= 0) { pc.font.i = true; } if (bius2.indexOf("U") >= 0) { pc.font.u = true; } if (bius2.indexOf("S") >= 0) { pc.font.s = true; } } pc.visible = xmlDetail.getItemIntTryCatch(i, "VISIBLE") == 1; prt.addColumn(pc); } prt.write(); return prt; } }