Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-03-2012
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Seleccion de Impresora por Defecto

Estimados..

Resulta que tengo un sistema que imprime en 2 impresoras. En una de las opciones imprimo siempre
por la impresora por defecto y en otras opciones solicito al usuario que seleccione la impresora.

Resulta que si el usuario selecciona x ej. la impresora 2 para hacer un informe, Windows "recuerda"
la ultima impresora seleccionada y cuando necesita imprimir por la opcion uno que es la "defecto"
no toma esta, sino que toma la ultima que Windows "imprimio" o guardo.

Como puedo hacer para que siempre tome la impresora por defecto sin tener que seleccionarla
independiente que en otras opciones del sistema se pueda imprimir por otras impresoras.

Gracias.
Responder Con Cita
  #2  
Antiguo 21-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Ibidi.

Revisá este enlace: Setting the Default Printer from code

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 21-03-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por lbidi Ver Mensaje
Como puedo hacer para que siempre tome la impresora por defecto sin tener que seleccionarla
independiente que en otras opciones del sistema se pueda imprimir por otras impresoras.
Para seleccionar la impresora por defecto en tu aplicación basta que pongas:

Código Delphi [-]
Printer.PrinterIndex := -1;

Si lo que quieres es cambiar cuál es la impresora por defecto en el sistema, entonces usa la opción de ecfisa.

// Saludos
Responder Con Cita
  #4  
Antiguo 22-03-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
También lo que puedes hacer es antes de imprimir guardar la impresora por defecto.

Código Delphi [-]
...
var
  IDDefault: Integer;
begin
  IDDefault := Printer.PrinterIndex;

  QuickReport.PrinterSetup;
  ...
  ...

  Printer.PrinterIndex := IDDefault;
end;

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #5  
Antiguo 23-03-2012
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Gracias a todos por responder.

Mi deseo no es "setear" la impresora por defecto, sino imprimir siempre en dicha impresora
independientemente que se haya impreso en otra, porque en una misma aplicacion,
si imprimo por otra impresora seleccionandola previamente, al parecer windows "recuerda"
cual fue la ultima utilizada e imprime por esta, al menos asi me esta saliendo ahora.

He probado con la opcion de PrinterIndex = -1, pero no ha causado ningun efecto.

Si hago la sugerencia de olbeup, printer.printerindex, que devuelve ?? la por defecto
o la ultima utilizada??

Les cuento un poco mas.

Tengo en una pc 2 impresoras, una matricial y una laser.
Los informes grandes se sacan por la laser la cual selecciona el usuario, pero hay un
ticket que tiene que salir SIEMPRE por la matricial sin preguntar al usuario, y esta
es la impresora por defecto del sistema.
Por eso , si imprimo algun informe por la laser, luego cuando imprimo el ticket, de alguna
manera recuerda que ésta fue la ultima y me imprime el ticket por esta impresora,
en lugar de la matricial.

Gracias por las sugerencias.
Responder Con Cita
  #6  
Antiguo 23-03-2012
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Yo guardo en un fichero INI las impresoras que se van a utilizar en la aplicación, configurable por el usuario, a continuación los fragmentos de código que utilizo.
Código Delphi [-]
  Case nModelo of
  1:begin
    Application.CreateForm(TfrLptFactura, frLptFactura);
    frLptFactura.LptFactura.PrinterSettings.PrinterIndex:=GetImpresora(Impresora1);
      if n = 1 then
      frLptFactura.LptFactura.PreviewModal
      else
      frLptFactura.LptFactura.Print;

    frLptFactura.Close;
    end;



Function GetImpresora(Impre:String):Integer;
Var
nCont:Integer;
lSearch:Boolean;
cNewLIne:String;
begin
lSearch:=False;
cNewLine:=Chr(10)+Chr(13);

  For nCont:=0 to Printer.Printers.Count - 1 do
  //buscamos la impresora en la lista del sistema
  begin

      if Pos(impre, Printer.Printers[nCont]) <> 0 then
      begin
      lSearch:=True;
      Result:=nCont;
      Break;
      end;

  end;

  if lSearch = False then
  begin
  ShowMessage('Impresora no encontrada.'+impre+cNewLine+'Se utilizará la predeterminda.');
  Result:=-1
  end;

end;



Procedure Obtener_Impresoras();
begin
MiCarpeta:=ExtractFilePath(Application.ExeName);
IniPrinters:=MiCarpeta+'MZprn.ini';
  Try
  //Abrir el INI
  Fichero := TIniFile.Create(IniPrinters);
  Impresora1:=Fichero.ReadString ('Facturas', 'String','Error');
  Impresora2:=Fichero.ReadString ('Albaranes', 'String','Error');
  Impresora3:=Fichero.ReadString ('Ruta', 'String','Error');
  Impresora4:=Fichero.ReadString ('Listados', 'String','Error');
  Except
  ShowMessage('No se pudo acceder al fichero '+Fichero.FileName  );
  end;
//
end;

//Ejemplo de INI

[Facturas]
String=\\FACTURACION\EPSON LQ-590 ESC/P 2 Ver 2.0
[Albaranes]
String=\\FACTURACION\EPSON LQ-590 ESC/P 2 Ver 2.0
[Ruta]
String=KONICA MINOLTA C360SeriesPCL
[Listados]
String=KONICA MINOLTA C360SeriesPCL


//Creación del INI


procedure TfrImpresoras.SpeedButton5Click(Sender: TObject);
var
lCrear:Boolean;
begin
lCrear:=True;
   if FileExists(IniPrinters) then
   begin
      if Application.MessageBox('El fichero ya existe.¿Seguro que desea sobreescribirlo?','Atención',mb_OkCancel +
      mb_IconQuestion)= idOk then
      begin
      DeleteFile(IniPrinters);
      lCrear:=True;
      end
      else
      begin
      ShowMessage('Opción cancelada por el usurio. El fichero no se creo.');
      lCrear:=False;
      end;
  end
  else
  lCrear:=True;
  if lCrear = True then
  begin
    Try
    Fichero := TIniFile.Create (IniPrinters); // Accedemos al Fichero
    //Facturas
    Etiqueta:='Facturas';
    Fichero.WriteString(Etiqueta,'String',EdFacturas.Text);
    //Albaranes
    Etiqueta:='Albaranes';
    Fichero.WriteString(Etiqueta,'String',EdAlbaranes.Text);
    //Albaranes Ruta
    Etiqueta:='Ruta';
    Fichero.WriteString(Etiqueta,'String',EdRuta.Text);
    //Listados
    Etiqueta:='Listados';
    Fichero.WriteString(Etiqueta,'String',EdListados.Text);

    Fichero.Free; // Cerramos el Fichero
    Obtener_Impresoras();
    Except
    ShowMessage('Atención:Se produjo un error, el fichero INI no se grabó.');
    end;
  end;

end;
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 23-03-2012 a las 21:33:29.
Responder Con Cita
  #7  
Antiguo 24-03-2012
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.462
Poder: 21
newtron Va camino a la fama
¿Y sería una tontería capturar la impresora activa antes de imprimir en la matricial, seleccionar la impresora matricial, imprimir en ella y luego volver a dejar la impresora que había?
__________________
Be water my friend.
Responder Con Cita
  #8  
Antiguo 26-03-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola lbidi,

Efectivamente tienes razón, Prueba con esto otro, está funciona correctamente
Código Delphi [-]
...
var
  IDDefault: Integer;
begin
  // Guardar la impresora por defecto
  IDDefault := Printer.PrinterIndex;

  // Decir cual es la impresora que tiene que utilizar el QuickReport
  QuickRep1.PrinterSettings.PrinterIndex := IDDefault;
  QuickRep1.PreviewModal;

  // Restaurar la impresora por defecto
  Printer.PrinterIndex := IDDefault;
end;
Un saludo
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.

Última edición por olbeup fecha: 26-03-2012 a las 08:51:14.
Responder Con Cita
  #9  
Antiguo 26-03-2012
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Gracias a todos por vuestras respuestas.

Aunque veo que la mayoria del codigo posteado es para QuickReport.

Estoy usando Fast Report, pero tratare de adaptarlo.

Saludos.
Responder Con Cita
  #10  
Antiguo 27-03-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por lbidi Ver Mensaje
Gracias a todos por vuestras respuestas.

Aunque veo que la mayoria del codigo posteado es para QuickReport.

Estoy usando Fast Report, pero tratare de adaptarlo.

Saludos.
Efectivamente todo está orientado a QuickReport, no he visto ningún post tuyo referente a Fast Report, casi todos usamos al menos yo QuickReport y todas las respuesta iban orientadas a QuickReport.

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #11  
Antiguo 27-03-2012
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
olbeup...Efectivamente tienes razon.. No mencione el uso de FR en ningun lado.

Casi siempre lo hago, pero esta vez en el apuro, omiti hacerlo.

Pido disculpas por la falta de informacion brindada al hacer la consulta.

Espero hacerlo mejor la proxima.

Gracias a todos.

Saludos.

Leonardo
Responder Con Cita
  #12  
Antiguo 27-03-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ya sabemos: Mejores preguntas obtienen mejores respuestas
Responder Con Cita
  #13  
Antiguo 27-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Ibdi.

Como la mayoría también uso Quick Report, pero buscando leí que en la propiedad PrintOptions.Printer de Fast Report, se encuentra la última impresora seleccionada.
A partir de ese dato, encontré este ENLACE, revisá si te resulta útil.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #14  
Antiguo 28-03-2012
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Gracias efcisa.. Con ese enlace y tu sugerencia, logre hacerlo.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
seleccion de impresora y letra de la impresora emeceuy Impresión 6 13-08-2017 14:11:05
Crear Reporte versus impresora por defecto Manuel Impresión 0 14-11-2008 21:44:09
¿Determinar el papel por defecto de la impresora? burasu Impresión 0 18-07-2006 11:37:43
Cambiar impresora por defecto mediante código jdiazan Impresión 2 15-12-2004 18:16:23
Poder cambiar la impresora por defecto ciscu Impresión 3 21-05-2004 17:03:35


La franja horaria es GMT +2. Ahora son las 07:59:20.


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
Copyright 1996-2007 Club Delphi