[Lazarus-es] impresion en red

Claudio Romero clauslack en gmail.com
Mie Ago 28 21:27:43 CEST 2013


Paola, la opción mas simple es un archivo INI, asi lo tengo yo en la empresa
Ejemplo

config.ini
[Opciones]
Impresora FC=Virtual_PDF_Printer
Impresora Bonos=hp4plus
Impresora Reportes=hp_LaserJet_4200

Lazarus

//Para buscar el número de impresora por el nombre de la misma.
function BuscarImpresora(nombre:string):integer;
var i:integer;
begin
    Result:=-1;
    for i:=0 to Printer.Printers.Count-1 do
    if UpperCase(nombre)=UpperCase(Printer.Printers.Strings[i]) then begin
        Result:=i; exit;
    end;
end;

//
//Leo las impresoras de config.ini cuando arranco la aplicación y
pongo los nros en variables globales
function LeerArchivoParametros:boolean;
var ini:Tinifile;archivo,temp:string;
begin
    archivo:=ExtractFilePath(Application.EXEName)+'config.ini';
    if not FileExists(archivo) then begin
        showmessage('ERROR:no se encuentra el archivo config.ini');
           result:=false;
        exit;
   end;
   ini := TIniFile.Create(archivo);
    with ini do begin
        GNroImpresoFacturas:=BuscarImpresora(ReadString('Opciones',
'Impresora FC',''));
        GNroImpresoraBonos:=BuscarImpresora(ReadString('Opciones',
'Impresora Bonos',''));
        GNroImpresoraReportes:=BuscarImpresora(ReadString('Opciones',
'Impresora Reportes',''));
        if (GNroImpresoFacturas=-1) then GNroImpresoFacturas:=0;
        if (GNroImpresoraBonos=-1) then GNroImpresoraBonos:=0;
        if (GNroImpresoraReportes=-1) then GNroImpresoraReportes:=0;
        Free;
    end;
    result:=true;
end;

//Para imprimir facturas uso el nro de impresora de GNroImpresoFacturas
procedure TForm1.Button1Click(Sender: TObject);
begin
    Printer.PrinterIndex:=GNroImpresoFacturas;
    //imprime con el objeto printer
end;

En tu caso podrias tener en el INI nombres diferentes de impresoras en
cada maquina, pero tu aplicación siempre leeria el mismo parametro.
Saludos




More information about the Lazarus-es mailing list