Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Impresora activa (https://www.clubdelphi.com/foros/showthread.php?t=3106)

botones67 21-08-2003 20:15:50

Impresora activa
 
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/Prog..._20147343.html
http://www.experts-exchange.com/Prog..._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:
Código:

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

Cita:

Empezado por serhasae
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!


La franja horaria es GMT +2. Ahora son las 06:56:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi