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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-09-2007
nfrfabian nfrfabian is offline
Miembro
 
Registrado: ago 2006
Posts: 55
Poder: 18
nfrfabian Va por buen camino
Seleccion impresora en rave y word

Hola, tengo un problema que no pude solucionar y quisiera sus consejos. Mi problema es el siguiente: Utilizo Rave Report para imprimir unas consultas a una base de datos. la impresion la tengo que realizar en 2 impresoras distintas. Tambien utilizo word para imprimir un documento al que le paso unos datos variables (mediante campos), en este caso tambien tengo que imprimir en dos impresoras distintas.
Buscando en el foro encontre la forma de seleccionar la impresora de una lista, tambien pude grabar las selecciones en un archivo para que al inicio de la aplicacion se carguen las impresoras en la que se deben imprimir en cada caso, pero a la hora de imprimir siempre imprime en la impresora por defecto.
Las intrucciones que utilizo son las siguientes:

Para cargar en un combo las impresoras disponibles:
Código Delphi [-]
  for i := 0 to Printer.Printers.Count-1 do begin
     Printer.PrinterIndex := i;
     Printer.GetPrinter(Device, Driver, Port, hDMode);
     combocertificado.Items.Add(Device);
     comboresto.Items.Add(Device);
     comborespaldo.Items.Add(Device);
  end;

Despues de seleccionar la impresora, guardo en un archivo todas las selecciones necesarias.
Al iniciar la aplicacion cargo en una variable global la impresora por defecto:
Código Delphi [-]
gindiceprinterdefault := printers.printer.printerindex;



Despues verifico que las impresoras que se grabaron en el archivo esten disponibles:

Código Delphi [-]
// vnombreimpresora es una variable con el nombre de la impresora que se grabo en el archivo
index := Printer.Printers.IndexOf(vnombreimpresora );
if index > -1 then
begin
  gindiceprintercertificado := index;
end
else
begin
  gindiceprintercertificado := gindiceprinterdefault;
  
end;
 
// vnombreimpresora2 es una variable con el nombre de la impresora que se grabo en el archivo
index := Printer.Printers.IndexOf(vnombreimpresora );
if index > -1 then
begin
  gindiceprinterrespaldo:= index;
end
else
begin
  gindiceprinterrespaldo := gindiceprinterdefault;
  
end;


Despues se suponia que cuando tenga que imprimir selecciono la impresora que corresponda:

Código Delphi [-]
Printer.PrinterIndex := gindiceprintercertificado;
//o
Printer.PrinterIndex := gindiceprinterrespaldo;

Me parece que el error al final porque al ser el Rave Report o Microsoft WORD programas externos, ellos no reciben el indice de la impresora que necesito.
En una parte vi que existe una forma de pasarle la impresora seleccionada a otro generador de reportes:

Código Delphi [-]
QuickRep1.PrinterSettins.PrinterIndex := nImpCocina;

Pero ninguno de los componentes de rave report tienen una propiedad para asignarle el indice de la impresora (o yo no lo encuentro). Los componentes que utilizo son:
RvSystem1
RvProject2
RvDataSetConnectioncronorespal
En este caso el componente RvSystem1, tiene para elegir el numero de copias, la pagina inicial, y otras propiedades, pero ninguna para indicarle el inice de la impresora a utilizar.


Para imprimir con MS Word utilizo lo siguiente:
Código Delphi [-]
const
  wdFindContinue = 1;
  wdReplaceOne = 1;
  wdReplaceAll = 2;
  wdDoNotSaveChanges = 0;
var
  gWord: OLEVariant;
  document, Documento: Variant;
  
begin
...
  path := ExtractFilePath(Application.ExeName);
  path := path + 'CARPETA\archivo.doc';
  Printer.PrinterIndex := gindiceprintercertificado;    
      gWord := CreateOLEObject('Word.Application');
      gWord.Documents.Add(path);
      Documento := gWord.Documents.Item(1);
      Documento.Variables.Add('nombre', nombre);
      Documento.Variables.Add('diaspa', nombreservicio);
      Documento.Variables.Add('p', cantcli);
      Documento.Variables.Add('n', certificado);
      Documento.Variables.Add('v', vencimiento);
      Documento.Variables.Add('f', factura);
      Documento.Fields.Update;
      documento.Fields.ToggleShowCodes;
      Document := gWord.ActiveDocument;

      Document.PrintOut(false);
      gWord.ActiveDocument.Close(wdDoNotSaveChanges);  
      ...


Sinceramente nose donde esta el error (solo la sospecha de que tengo que pasarle el indice de la impresora seleccionada tanto a rave report como a word). Las variables que utilizo tiene datos correctos (las tres variables son distintas: gindiceprinterdefault, gindiceprintercertificado, gindiceprinterrespaldo).
Si me puede ayudar se los voy agradecer, hace dos dias que estoy con esto y no puedo resolverlo. Gracias.
Responder Con Cita
 



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
Ahora la seleccion de impresora no funciona Taribus Impresión 4 09-07-2007 22:58:12
selección en Rave Report david.rguez Impresión 0 19-09-2006 16:37:45
Selección de impresora en QuickReport Athalon Impresión 4 10-08-2004 16:16:36
Imprimir con word en impresora en concreto Firibiri Servers 0 07-10-2003 11:09:09


La franja horaria es GMT +2. Ahora son las 17:52:35.


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