PDA

Ver la Versión Completa : Impresora activa


botones67
21-08-2003, 20:15:50
Hola a todos.

tengo un Qrepor1 que quiero imprimir qrepor1.print ¿ hay alguna manera de saber si la impresora esta operativa antes de imprimir ?
GRACIAS ANTICIPADAS.

Botones67

delphi.com.ar
21-08-2003, 20:42:07
Estos dos links, muestran como averiguar el estado de la impresora:

http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20147343.html
http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20118086.html

(Ten en cuenta que el del TPrinterStatus, no creo que funcione en plataformas NT, porque trabajan en forma directa con el puerto)

Saludos!

botones67
21-08-2003, 21:32:29
hola de nuevo.

Y como se implementaria Tprinterstaus?

Gracias por todo.

delphi.com.ar
21-08-2003, 21:43:05
Solo tendrías que crear una instancia de esa clase y usar sus propiedades, asignándole previamente el puerto de la impresora, sinó por defecto toma la impresora que este conectada al LPT1.
¿Sabes como hacerlo?


O puedes usar el otro código que hace lo mismo:

function PrinterStatus : integer;
asm
mov ah, 2 // function 2 - returns status of port
mov dx, 0 // lpt1 = 0, lpt2 = 1 etc
int $17 // status in ah
mov al, ah
and eax, $FF // status now in eax with top 24 bits cleared
end;

const
PrinterCodes : array [0..7] of string =
('printer timed-out',
'unused',
'unused',
'I/O error',
'printer selected',
'out of paper',
'printer acknowedgment',
'printer not busy');

procedure TForm1.Button1Click(Sender: TObject);
var
L,P : integer;
begin
P := PrinterStatus; //status of printer in P
ListBox1.Clear;
for L := 0 to 7 do
if P and (1 shl L) <> 0 then
ListBox1.Items.Add (PrinterCodes [L]);
end;

botones67
21-08-2003, 22:11:03
Lo siento, no sé como hacerlo, indicame por favor.

serhasae
27-10-2005, 13:04:01
Delphi he probado tu codigo el que das para saber el estado de una impresora y me da una excepcion de memoria al hacer click sobre el boton, seguro que esta todo bien?. Lo he probado en windows xp sp2. Al estar basado sobre nt seguramente por eso no me va.

delphi.com.ar
27-10-2005, 14:18:24
Delphi he probado tu codigo el que das para saber el estado de una impresora y me da una excepcion de memoria al hacer click sobre el boton, seguro que esta todo bien?. Lo he probado en windows xp sp2. Al estar basado sobre nt seguramente por eso no me va.
No funcionará sobre arquitecturas NT. Sobre las plataformas Win9x puedes dialogar directamente con el hardware, 0% abstracción!... En arquitecturas NT, esto no es posible, siempre hay que dialogar a través del núcleo.
Vas a tener que hacerlo mediante GetPrinter.

Saludos!