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 18-06-2010
lacovera lacovera is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
lacovera Va por buen camino
Cambiar impresora tiempo Ejecucion

Hola a todos! tengo una duda 'existencial'!!!

Tengo que cambiar la impresora en la que se mana un archivo en un momento dado, no la quiero predeterminada, puedo ponersela en algún parámetro x ejemplo en el shellExecute?
ahora lo estoy imprimiendo asi, claro, sale xla predeterminada.

ShellExecute(Printer.Handle, 'print', PChar(('hola.PDF')), nil, nil, 0);

un saludo y gracias!!
Responder Con Cita
  #2  
Antiguo 18-06-2010
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
Código Delphi [-]
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;

Yo para uso con Quickreport me he he creado esta función y me va perfectamente, puedes hacer la prueba.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 18-06-2010
lacovera lacovera is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
lacovera Va por buen camino
ok pruebo y cuento!
gracias
Responder Con Cita
  #4  
Antiguo 18-06-2010
lacovera lacovera is offline
Miembro
 
Registrado: dic 2006
Posts: 87
Poder: 18
lacovera Va por buen camino
es un poco raro..no me hace absolutamente nada
le pongo
GetImpresora('PDFCreator');

y me imprime por la predeterminada igual

sin embargo le paso
GetImpresora('NoExiste');
y me detecta que no existe...
Responder Con Cita
  #5  
Antiguo 19-06-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Sucede que la función que te pasó Marcos, sirve para obtener el índice de la lista de impresoras de la VCL dentro del propio entorno de tu proceso, y tu estas utilizando ShellExecute para imprimirlo, que donde el Shell crea un proceso nuevo según lo que tenga asociado al método "print" de los archivos con extensión PDF.
Una solución posible es utilizar el código de Marcos para cambiar el DefaultPrinter del sistema, algo que no me gustaría que haga algún programa de terceros que instale en mi PC. Si solo te interesa imprimir PDFs, te recomiendo buscar e investigar, que seguramente existan, formas mas completas para imprimir documentos de este tipo, tales como algun juego de APIs que ofresca Adobe.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 03-11-2010
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
Question El mismo problema...

Hola gente, tengo el mismo problema. No puedo cambiar la impresora en tiempo de ejecucion. Uso Delphi 7 y Quickreport 4.05. Lo que yo hago es en un combo obtener todas las impresoras instaladas y ahi me muestra perfectamente las impresoras instaladas y con
Código Delphi [-]
printer.printerindex
obtengo la impresora por defecto. Ahora cuando elijo otra del combo cambio la propiedad antes mencionada asignandole el valor de la impresora que acabo de seleccionar pero cuando mando a imprimir el qiuckreport siempre me imprime en la impresora configurada por defecto.
Desde ya les agradezco su respuesta.
Saludos...
Responder Con Cita
  #7  
Antiguo 04-11-2010
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
Es muy simple, pon en el "uses" el "Printers", en un ComboBox carga todas la impresora que tienes, después sólo tienes que hacer "Printer.PrinterIndex = ComboBox.ItemIndex y listo.

Para cargar todas las impresora en un ComboBox lo que tienes que hacer es
Código Delphi [-]
  ComboBox1.Items.Clear;
  ComboBox1.Items.Assign(Printer.Printers);
Seleccionar la impresora por la cual quieres imprimir y cambiar el Printer.PrinterIndex = ComboBox1.ItemIndex.

Un saludo.
Responder Con Cita
  #8  
Antiguo 04-11-2010
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
Ejemplo de uso de la función que cité en su día.

Código Delphi [-]
procedure TfrDescuadresTodosProv.spListadoVistaClick(Sender: TObject);
begin
DmConex.Impres.Active:=True;
Application.CreateForm(TfrLstDescuadres, frLstDescuadres);
frLstDescuadres.ListaDescuadres.PrinterSettings.PrinterIndex:=GetImpresora(DmConex.ImpresListados.va  lue);
frLstDescuadres.ListaDescuadres.PreviewModal;
frLstDescuadres.Close;
DmConex.Impres.Active:=False;
end;

ListaDescuadres es un objeto TQuickRep. y frLstDescuadres es el formulario contenedor.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #9  
Antiguo 04-11-2010
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
Gracias

He aplicado la funcion que dice Marcos y me anduvo perfecto. Muchas gracias!!!!
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
Quitar y poner impresora en tiempo de ejecucion sanxpue API de Windows 0 23-10-2006 19:57:15
Seleccionar Impresora En Tiempo De Ejecucion. ElCherchu Impresión 1 22-08-2006 09:02:01
Cambiar imagen en tiempo de ejecucíón lucasarts_18 Gráficos 7 27-07-2005 15:51:06
cambiar color en tiempo de ejecucion? maruenda Varios 8 14-01-2004 21:28:34
Agregar una impresora en tiempo de ejecucion fanon Impresión 1 26-05-2003 10:16:20


La franja horaria es GMT +2. Ahora son las 22:38:55.


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