PDA

Ver la Versión Completa : Impresión en red


monicasierrar
24-11-2007, 15:37:51
Hola a todos.

Realicé una aplicación con delphi6, Ib 6.0 y utilizo como reporteador a RBuilder. El problema que tengo es que solo me está imprimiendo en la primera impresora que instalé, una samsung ML-2060 y desde un solo equipo, el primero que instale la aplicación. Cuando ejecuto la aplicación en otro equipo y quiero mandar a otra impresora que está en red, una ML-1060, ni a ninguna otra, no imprime nada. Pero si imprime desde word, página de pruebas, etc.

Alguna idea?

salvica
25-11-2007, 00:42:53
Hola
Hola a todos.

Realicé una aplicación con delphi6, Ib 6.0 y utilizo como reporteador a RBuilder. El problema que tengo es que solo me está imprimiendo en la primera impresora que instalé, una samsung ML-2060 y desde un solo equipo, el primero que instale la aplicación. Cuando ejecuto la aplicación en otro equipo y quiero mandar a otra impresora que está en red, una ML-1060, ni a ninguna otra, no imprime nada. Pero si imprime desde word, página de pruebas, etc.

Alguna idea?
Tendrás que decirle al generador cual es la impresora que deseas utilizar.

Aquí tienes un ejemplo de asignación de impresoras http://www.clubdelphi.com/foros/showthread.php?t=50498, para ello deberás hacer un bucle hasta encontrar la impresora "por defecto" del ordenador en cuestión o la que deseas. En el foro he visto varios ejemplos de como hacerlo.

Saludos
salvica

Edito: No me fijé que unos posts más abajo hay un ejemplo de como buscar impresoras, exactamente aquí http://www.clubdelphi.com/foros/showthread.php?t=50659

monicasierrar
27-11-2007, 19:15:01
Hola. Muchas gracias por colaborarme.

Resulta que hice lo que tu me sugeriste, cargue en un combo box el listado de las impresoras, seleccióno en la que voy a imprimir, con RBuilder, asigno el nombre de la impresora

procedure TrptBalanceGral2007.ReporteBeforePrint(Sender: TObject);
begin
Reporte.PrinterSetup.PrinterName := NombreImpresora;
end;

Y nada, la primera vez trata de coger el papel, pero después ni se mueve la impresora.

Alguna otra idea,

Nuevamente gracias.

Mónica:

salvica
28-11-2007, 11:19:46
Hola. Muchas gracias por colaborarme.
Resulta que hice lo que tu me sugeriste, cargue en un combo box el listado de las impresoras, seleccióno en la que voy a imprimir, con RBuilder, asigno el nombre de la impresora

procedure TrptBalanceGral2007.ReporteBeforePrint(Sender: TObject);
begin
Reporte.PrinterSetup.PrinterName := NombreImpresora;
end;

Y nada, la primera vez trata de coger el papel, pero después ni se mueve la impresora.

Alguna otra idea,

Nuevamente gracias.

Mónica:
No lo estás haciendo bien, más o menos seria así:

Uses
....
....
Printers;

function AsignarImpresora:integer;
var
ComboBox : TComboBox;
NumItem : integer;
Begin
{ creamos el combox para las impresoras existentes }
ComboBox := TComboBox.Create( nil );
with ComboBox do
try
Visible := false; //---------------------------> ocultamos el combobox
Parent := rptBalanceGral2007; //--------------> asignamos a "quién pertenece"
Clear; //--------------------------------------> inicializamos por si existe algo (no es necesario)
AddStrings(Printer.Printers); //---------------> cargamos las impresoras del sistema
NumItem := Items.IndexOf('PDF Creator'); //---> buscamos la impresora a utilizar
{ Asignamos el indice de la impresora }
with rptBalanceGral2007 do
Reporte.PrinterSettings.PrinterIndex := NumItem
finally
Free; //---------------------------------------> eliminamos el combobox
end;
Result := NumItem;
End;

procedure TrptBalanceGral2007.ReporteBeforePrint(Sender: TObject);
begin
if( AsignarImpresora=-1 ) //-------------------------> comprobamos si asignamos la impresora
then ShowMessage( 'Impresora no encontrada' );
end;

Esto lo he hecho de memoria, pero como ejemplo vale
Saludos
salvica

Lepe
28-11-2007, 12:47:00
¿no se puede resumir en esto otro?


NumItem := Printer.Printers.IndexOf('PDF Creator');
if NumItem = -1 then
ShowMessage('error no encontrada la impresora 'PDF Creator')


Printers es de tipo TString y ya tiene el "IndexOf"


Saludos

salvica
28-11-2007, 13:45:08
¿no se puede resumir en esto otro?

Código Delphi [-] (http://www.clubdelphi.com/foros/#)NumItem := Printer.Printers.IndexOf('PDF Creator');
if NumItem = -1 then ShowMessage('error no encontrada la impresora 'PDF Creator')


Printers es de tipo TString y ya tiene el "IndexOf"


Saludos
Hola Lepe, es mejor y más corto :rolleyes: pero así daba a entender la diferencia entre lo que hace monicasierrar y el porqué de la búsqueda de la impresora (que no lo tiene muy claro)

Saludos
salvica