我在做一个餐饮程序,遇到了问题,在前台收银时一个数据表有几条记录分别要送到网络内不同的打印机进行打印,请仁兄提供思路.

解决方案 »

  1.   

    可以直接用printer(uses printers)来处理
    Printer.PrinterIndex 可以切换打印机
    Printer.BeginDoc 可以在当前打印机上开始一个打印任务
    Printer.Canvas 下面有些成员函数,可以向打印机输入
    Printer.NewPage 可以输出一页到打印机,并开始新的一页
    Printer.EndDoc 可以在当前打印机上结束一个打印任务
    Printer.Printing 可以检查当前打印机上是否正在生成打印任务(是否已开始一个打印任务)
    还有其他的,比如列出打印机数量及各打印机的名称等等,就不一一列出了根据打印服务的设置(系统里有相关的设置界面)不同,有即时打印和打印任务完成后由系统服务进行后台打印
      

  2.   

    printer.printerindex := 1;//假设这是printer1的编号
    if not adoquery.eof then printer.begindoc;
    i:=0;
    while not adoquery.eof do
    begin
           printer.canvas.textout(0,i*50,adoquery.fieldvalue['aaaa'];
           inc(i);
           if i = 50 then printer.newpage;
           adoquery.next;
    end;
    if printer.printing then printer.enddoc;adoquery.first;
    printer.printerindex := 2;//假设这是printer2的编号
    if not adoquery.eof then printer.begindoc;
    i:=0;
    while not adoquery.eof do
    begin
           printer.canvas.textout(0,i*50,adoquery.fieldvalue['bbbb'];
           inc(i);
           if i = 50 then printer.newpage;
           adoquery.next;
    end;
    if printer.printing then printer.enddoc;在“打印机和传真”里面的一台打印机上点右键,属性,高级
    里面有使用后台打印和直接输出到打印,2个2选一,建议用前面的,直接输出到打印机的话,程序会死等打印完成上一个输出动作才会响应,如果大批量输出,程序会出现“无响应”的情况,不友好。
      

  3.   

    上面有点错误
    if i=50 then printer.newpage;
    应改为
    if i=50 then
    begin
           i:=0;
           printer.newpage;
    end;