我有两台打印机,一台是标签打印机,另外一台是普通激光打印机,普通打印机为默认打印机,我想在打印标签的时候直接将打印输出到标签打印机,不用每次打印标签的时候都去选择打印机.我用PrinterIndex直接指定了标签打印机,打印标签的时候确实也能到标签打印机上,但是打印机打印时并不是用预先在标签打印机上设置好的纸张打印的,而总是用标签打印机驱动程序默认的纸张打印的,导致走纸不正常.
    不知道除了设置PrinterIndex之外,还需要做些什么处理,紧急救助各位大虾!先谢谢了!    补充:当把标签机设置为默认打印机时,打印走纸都没问题,但是一旦打印其他报表是选择了其他打印机,再回来打印标签时就又出现了上面说的走纸不正常的问题了.

解决方案 »

  1.   


       打标签时让程序设标签打印机为默认打印打机后再打印,打激光时同样处理,设置默认打印机参考代码:(1)获取已经安装的打印机列表
          ComboBox1.Items:=Printer.Printers; {populates ComboBox} //取打印机列表
         ComboBox1.ItemIndex:=Printer.PrinterIndex; //获得当前默认打印机(2)设任意一个打印机为默认打印机         Printer.PrinterIndex:=ComboBox1.ItemIndex;
            Printer.GetPrinter(Device,Driver,Port,hDeviceMode);
            StrCopy(s,Device);
            StrCat(s,',');
            StrCat(s,Driver);
            StrCat(s,',');
            StrCat(s,Port);
            WriteProfileString ('windows','device',s);
            StrCopy(s,'windows');
            SendMessage(HWND_BROADCAST,WM_WININICHANGE,0,LongInt(@s));