Page 3 of 3
Posted: Fri Nov 17, 2006 8:56 am
by pymsoft
Antonio, ME FUNCIONA LA IMPRESION!!!
Dear Mr. Pedro
To warm up the printer, it needs to take a few milliseconds.
We modified your code, and it work.
HB_FUNC( PRT_TESTPRINT )
{
CPrinter * printer = new CPrinter;
printer->Prt_Open();
Sleep(30);
printer->Prt_TestPrint();
}
But I do not recommend to use Prt_Open() function at the same routine together with any printing commands.
Visto que me recomiendan usar Prt_Open() al abrir el programa y no todo junto, como puedo hacer para crear un objeto (el objeto printer) y tenerlo ahi y usarlo cuando quiera.
Por ejemplo asi:
oPrn := ClaseCPrinter()
oPrn:TestPrint()
o
TestPrint( oPrn )
Gracias
Posted: Fri Nov 17, 2006 12:51 pm
by Antonio Linares
Pedro,
Code: Select all | Expand
static CPrinter * printer = NULL;
HB_FUNC( PRT_TESTPRINT )
{
if( printer == NULL )
printer = new CPrinter;
printer->Prt_Open();
Sleep(30);
printer->Prt_TestPrint();
}
Posted: Fri Nov 17, 2006 12:52 pm
by Antonio Linares
o bien:
Code: Select all | Expand
static CPrinter * printer = NULL;
HB_FUNC( PRT_TESTPRINT )
{
if( printer == NULL )
{
printer = new CPrinter;
printer->Prt_Open();
Sleep(30);
}
printer->Prt_TestPrint();
}
Posted: Fri Nov 17, 2006 1:50 pm
by pymsoft
Antonio,
Un espectaculo!!!! FUNCIONA
Muchas gracias por tu invalorable ayuda.
De verdad, no se que hubiera hecho si no me respondías tu.
Ya empecé a escribir las primeras funciones que necesito para imprimir:
Code: Select all | Expand
#ifdef MOBITRON
#pragma BEGINDUMP
#include "hbapi.h"
#include "windows.h"
#include "c:\lavwin\teve\mobitron\inc\Printer.h"
#include "c:\lavwin\teve\mobitron\inc\Beep.h"
static CPrinter * printer = NULL;
HB_FUNC( PRT_OPEN )
{
if( printer == NULL )
{
printer = new CPrinter;
}
printer->Prt_Open();
Sleep(30);
}
HB_FUNC( PRT_CLOSE )
{
if( printer == NULL )
{
printer = new CPrinter;
}
printer->Prt_Close();
}
HB_FUNC( PRT_PRINTTEXT )
{
if( printer == NULL )
{
printer = new CPrinter;
}
printer->Prt_PrintText( hb_parc(1), hb_parni(2) );
}
HB_FUNC( PRT_SETLINESPACING )
{
if( printer == NULL )
{
printer = new CPrinter;
}
printer->Prt_SetLineSpacing( hb_parni(1) );
}
HB_FUNC( PRT_LINEFEEDBYLINE )
{
if( printer == NULL )
{
printer = new CPrinter;
}
printer->Prt_LineFeedByLine( hb_parni(1) );
}
HB_FUNC( PRT_TESTPRINT )
{
CPrinter * printer = new CPrinter;
printer->Prt_Open();
Sleep(30);
printer->Prt_TestPrint();
//printer->Prt_Close();
}
HB_FUNC( BEEP_ON ) // nTone, nTime
{
CBeep * Beep = new CBeep;
Beep->Beep_On( hb_parni(1), hb_parni(2));
}
#pragma ENDDUMP
#else
FUNCTION Prt_TestPrint(); RETURN 0
FUNCTION Beep_On(); RETURN 0
#endif
Solo me queda una cosa para resolver, que de todos modos no
es un grave problema, pero es lo siguiente, mando a imprimir y no lo hace
hasta que no pongo un msginfo(), y bueno, le pongo uno que dice msginfo("FIN IMPRESION")
sin esto, imprime solo una linea y nada mas...
GRACIAS, GRACIAS, GRACIAS
Posted: Fri Nov 17, 2006 4:52 pm
by Antonio Linares
Pedro,
Prueba a llamar a SysRefresh() en vez de llamar a MsgInfo()
Posted: Fri Nov 17, 2006 5:45 pm
by pymsoft
Antonio,
Probé a aponer el sysrefresh, pero por algun motivo no imprime ni siquiera una linea.
Seguramente es que apago la impresora antes de que comience a imprimir.
De este modo mando a imprimir, pongo el mensaje, luego que hago click en el mensaje cierro la impresora.
Gracias