最近遇到一个需求,POS机打印的时候,如果每次都出现一个对话框,让选择打印机,无疑是很煞风景的事情,AX可以通过PrintJobSettings类来设置默认的打印机,不需要每次都让用户设定。步骤如下:
1.阻止打印对话框的出现
在Report的Methods下添加方法showDialog
Boolean showDialog()
{
return false;
}
2.给用户一个设定打印机的窗口,写一个窗体,在Button的Clicked方法下添加如下代码:{
return false;
}
void clicked()
{
PrintJobSettings printJobSettings;
ReportPrinterSetting rps;
;
super();
printJobSettings = new PrintJobSettings();
printJobSettings.printerSettings('SysPrintForm');
select firstonly forupdate rps;
ttsbegin;
rps.PrinterSetting = printJobSettings.packPrintJobSettings();
rps.write();
ttscommit;
}
{
PrintJobSettings printJobSettings;
ReportPrinterSetting rps;
;
super();
printJobSettings = new PrintJobSettings();
printJobSettings.printerSettings('SysPrintForm');
select firstonly forupdate rps;
ttsbegin;
rps.PrinterSetting = printJobSettings.packPrintJobSettings();
rps.write();
ttscommit;
}
其中表ReportPrinterSetting包含一个Container类型的字段PrinterSetting,用来存放用户设定的打印机设定信息。
3.在报表的Init方法或则fetch方法中,设定PrintJobSettings类。
public void init()
{
ReportPrinterSetting rps;
Container c;
;
select firstonly rps;
super();
c = rps.PrinterSetting;
if(!c)
throw error("@GCN956");
element.unpackPrintJobSettings(c);
}
@GCN956为提示信息,提示用户设置打印机。
{
ReportPrinterSetting rps;
Container c;
;
select firstonly rps;
super();
c = rps.PrinterSetting;
if(!c)
throw error("@GCN956");
element.unpackPrintJobSettings(c);
}