各位高人:我需要在程序中进行实时信息的打印,即当信息产生时就打印一行信息,然后停在那里,有新的信息出现时,又打印一行后停在那里。如此全天候进行实时信息的打印工作,我曾查阅过多方资料,皆没有解决,望高手救命!我的运行环境:win2000 server;hp deskjet 1125c printer。

解决方案 »

  1.   

    uses printers;with printer do
      begin
        beginDoc;
        canvas.Font.Name:='宋体';
        canvas.Font.style:=[FsBold];
        canvas.Font.size:=11;
        canvas.Textout(100,120,'你要打的内容');  //100 距水平  120 距垂直
        EndDoc;
      end;
      

  2.   

    to 上述高人:以上的方法不行的,那样打印完成后会自动进整张纸,而我需要每次仅进纸一行,出现一次需打印信息即打印一行。begindoc和enddoc只有当enddoc语句执行后才开始打印,且打印本次信息后即进整张纸。
      

  3.   

    我还曾经试用过assignprn方法,也是不行,原因同上,如果不运行结束任务语句,即不打印,而执行结束语句打印后又进整张纸。另:我还曾尝试将打印纸张设置长度设置为一行,但在win2000下却怎么也不行。此外,我还想直接向打印机输送控制码,但hp的本款打印机pcl需要购买。现在实在是没有方法了。我曾查阅过大富翁论坛,见有一位“豆豆糖”说已实现此种功能,但也不知联系方法。
      

  4.   

    要想EndDoc时仅走纸一行,估计不容易!
    我亦苦思!
      

  5.   

    我也遇到这样的问题!!!!
    还有我对打印机的打印纸张进行自定义设置都不行!!!
    我也是PDEVMODE中设置的
      

  6.   

    我现在对于CSDN已略有失望了,一个问题这么久也没有人帮忙解决,真的是人心不古了吗?
      

  7.   

    老弟,喷墨打印机就不清楚了,不如动员客户改用针式算了,另外你可以先试试以文件方式打开打印机,然后Print到文件的方式,不过每次只能打一行,大富翁上有相应的代码很多。而且喷墨还要牵扯到换纸,估计不好做的
      

  8.   

    你可以用读文件的方式进行打印:
    下面是一个简单的例子assignfile(f, ‘lpt1’); 
    rewrite(f); 
    writeln(f,str); 
    closefile(f); 
      

  9.   

    我有一个想法(不知可行否):定义一个boolean类型变量 如:flag当有消息产生时,
    flag:=1;
    if flag=1 then 
    begin 
    startdoc
    ........
    enddoc
    flag:=0;
    end;
      

  10.   

    各位,这个问题是比较难解决的,首先如果使用激光或者喷墨打印是不能实现逐行打印(print line by line)的,如果是在WINDOWS系统下可以调用写LPT口的API但是很可惜她不支持中文,目前可以解决的办法就是在打印之前先确定打印内容的大小,然后根据这个大小去设置纸张就能够基本解决,不妨去试试。
      

  11.   

    各位:这个问题到现在我依旧没有什么好的方法,程序中只要用到“ENDDOC"之类的语句打印机即走纸一页,看来只好通过设定纸张的长度来解决了。但可惜的是我试了各种语句在2000SERVER下就是不能设置纸张的长度,望各位多多帮忙,帮助试验一下,万望成功后将源码公布一下以共同进步。
      

  12.   

    以上所有的方法我都试了!!全不行!!我正在思考中!
      1, 设置纸大小是一选择,但我设置了以后,只是打印范围被设置了,打印纸仍然
         走A4,求高人help
      2, 用TC2.0编程,调用汉字库是一个选择(在DElphi中用WinExec())
      3, 用汇编是一个选择     其中,2,3肯定可以行的通,我打印英文完全没有问题!