PDA

Ver la Versión Completa : Impresora predeterminada?


danytorres
14-01-2004, 15:29:09
Hola a todos los del foro. mi pregunta parese censilla pero no la se como coloco una impresora predeterminada la que yo quiera. Gracias de antemano. :)

danytorres
15-01-2004, 18:13:18
Sera que es muy complicado colocar una impresora a traves de delphi 7 como predeterminada. :rolleyes:

__cadetill
15-01-2004, 18:27:07
Lo que no entiendo a qué te refieres como predeterminada, ha que un determinado listado te salga por una determinada impresora sin que sea la predetermiada de Windows??

danytorres
15-01-2004, 20:35:45
Gracias por responder cadetill, lo que deseo es colocar una impresora predeterminada estoy trabajando con rave 5 tengo el reporte de una factura y el reporte de una etiqueta ambas salen por impresoras diferentes como le indico al reporte por cual debe salir, yo pese cuando genere el reporte de factura coloco la impresora que es de factura como predeterminadad y cuando genere el reporte de etiqueta coloco como predeterminada la impresora de etiqueta, todo estos es para que el usuario no tenga que escoger la impresora cuando imprima un reporte. el detalle esta como coloco una impresora como predeterminadad. agradesco la ayuda. :)

__cadetill
15-01-2004, 23:57:27
bueno, pues si no recuerdo mal (lo digo de memoria) se hace con el objeto Printer declarado en la unit Printer

Algo así más o menos


Printer.PrinterIndex := 1;

Mirate este objeto que varás que también puedes acceder a las impresoras instaladas en el sistema con Printer.Printers (de tipo TStrings),.....

Espero te sirva

danytorres
18-01-2004, 06:13:07
Cadetil, probe lo que me dices pero cuando saco el reporte me sigue sacando la impresora que originalmente estaba como predeterminada. :( que hago.

__cadetill
18-01-2004, 14:27:52
Veamos

Nosotros tenemos varias impresoras y, según el listado, éste ha de salir por una o por la otra. ¿Cómo lo hacemos? Pues bien, tenemos un archivo INI más o menos con esta estructura:


[IMPRESORAS]
ETIQUETAS=SP40
LISTADO_STOCKS=Lexmark Optra W810
A3=SuperLexmark
.....

Me imagino que lo entiendes, pero sino, lo que ponemos es un nombre de variable (etiquets, listado_stocks, a3,...) y el nombre de la impresora por el cual lo queremos imprimir (el que ves en la pantalla de impresoras instaladas en el sistema).
Luego, me creé la siguiente función con la que recupero la impresora deseada


...
const
PrintersIni = 'c:\ImpJulia\Printers.ini';
.....

function TBaseListado.GetImpresora(Impresora: string) : integer;
var
Ini : TIniFile;
Imp : string;
i : integer;
begin
if FileExists(PrintersIni) then
begin
Ini := TIniFile.Create(PrintersIni);
Imp := Ini.ReadString('IMPRESORAS', Impresora, '');
Ini.Free;
end;

if Imp = '' then
Result := -1
else
begin
// buscamos la impresora en las instaladas y devolvemos su índice
for i := 0 to Printer.Printers.Count - 1 do
if Pos(Imp, Printer.Printers[i]) <> 0 then Break;
Result := i;
end;
end;

Y luego, desde algún lugar y, antes de hacer el Print o Preview del listado se hace la asignación al QuickReport


var
Indice: integer;
begin
.....
Indice := GetImpresora('A3');
if Indice <> -1 then
Report.PrinterSettings.PrinterIndex := Indice;
.....
QuickReport1.Print; // o QuickReport1.Preview;


La función tiene un pequeño "bug" que no he tenido ni tiempo ni ganas de arreglar. Y es que si la impresora está definida pero no está configurada, petaría. Este pequeño detalle ya te lo dejo a ti (si lo quieres solucionar) :D

Bueno, espero que ahora sí puedas hacer lo que quieres ;)

danytorres
18-01-2004, 18:10:23
Gracias por responder cadetil, el codigo funciona muy bien en Qreport pero en Rave 5 no cuando ejecuto un repote de rave la impresora que me sale es la que esta originalmente predeterminada por win?

__cadetill
18-01-2004, 19:58:44
cierto, que era para Rave :o

Pues no he trabajado nunca con Rave. Mira a ver si hay alguna manera de indicarle el índice de una impresora (estilo QR). La verdad, no te sabría decir :(

danytorres
19-01-2004, 00:25:35
Gracias de todas maneras cadetil. :)

El detalle esta que no quiero utilizar Qreport quiero seguir con Rave 5 agradesco a quien me pueda dar una mano :(