小弟做POS系统时要做一个票据打印,就象银行的票据打印一样.
不知道要买什么类型的票据打印机. 针打还是热敏式.需要主要什么指标,请介绍几款!

解决方案 »

  1.   

    我现在也在作票据打印,我用的是针打。
    但是对数据输出的位置控制的不好。
    你有什么好的方法吗?
    我的方法如下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
       Device : array[0..cchDeviceName - 1] of Char;
       Driver : array[0..(MAX_PATH - 1)] of Char;
       port : array[0..32] of Char;
       hDMode :THandle;
       pDMode :PDevMode;
    begin
       printer.GetPrinter(Device,Driver,Port,hDMode);
       //获取打印机DevMode结构的句柄值,存放在hDMode中
       if hDMode <> 0 then
         begin
          pDMode := GlobalLock(hDMode);
       //获取指向打印机DevMode结构的指针
         if pDMode <> nil then
            begin
               pDMode^.dmPaperSize := 256;
        //如果要将当前的打印机纸张变为自定义的
        // dmPaperSize 必须设置成256
            pDMode^.dmPaperLength := 1850;
            pDMode^.dmPaperwidth :=  2630;
            pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE;
            pDMode^.dmFields := pDMode^.dmFields or DM_PAPERLENGTH;
            pDMode^.dmFields := pDMode^.dmFields or DM_PAPERWIDTH;
            //以上三条语句 是对相应的dmFields成员进行置位
             ResetDC(Printer.Handle,pDMode^);
             //设置打印机设备环境句柄的值
             GlobalUnlock(hDMode);
             end;
            end;
           //打印输出的数据
        with  Printer do begin
              begindoc;
              // Canvas.TextOut(955,212,edit1.Text);
               //Canvas.TextOut(1155,212,edit2.Text);
               //Canvas.TextOut(355,315,edit3.Text);
             {  Canvas.TextOut(960,222,edit1.text);   //听字
              Canvas.TextOut(1155,222,edit2.text);  //第几联
              Canvas.TextOut(355,325,edit3.text);   //姓名
              Canvas.TextOut(430,380,edit4.text);   //案件名称
              Canvas.TextOut(420,450,edit5.text);   //年
              Canvas.TextOut(605,450,edit6.text);    //月
              Canvas.TextOut(680,450,edit7.text);   //日
              Canvas.TextOut(760,450,edit8.text);   //上下午
              Canvas.TextOut(850,450,edit9.text);   //几时
              Canvas.TextOut(930,450,edit10.text);  //分
              Canvas.TextOut(1050,450,edit11.text);  //地点
              Canvas.TextOut(520,570,edit12.text);  //主持人姓名
              Canvas.TextOut(950,570,edit13.text);  //主持人职务
              Canvas.TextOut(520,635,edit14.text);  //记录人姓名
              Canvas.TextOut(950,635,edit15.text);  // 记录人职务
              Canvas.TextOut(420,1750,edit16.text);   //通知日期:年
              Canvas.TextOut(605,1750,edit17.text);    //月
              Canvas.TextOut(680,1750,edit18.text);   //日
              Canvas.TextOut(680,1750,edit18.text);
              Canvas.TextOut(680,1750,edit18.text);
              Canvas.TextOut(680,1750,edit18.text);  }
              Canvas.TextOut(680,680,memo1.Lines.Text);
              EndDoc;
      end;
    end;
      

  2.   

    To: : shangxueson
    不好意思,我还没有用过票据打印机.