Cita:
|
La idea general es poder definir en un archivo de texto o ini, diferentes impresoras y asignarlas en runtime segun lo que se desee imprimir.
|
Hola Ibdi.
No capto bién la idea de lo que buscas hacer. Para que el usuario asigne una de las impresoras disponibles, basta con pasarlas a un ListBox, ComboBox, etc, para que se las elija desde allí.
Pero en ese caso no tendría mucho sentido guardarlas en un archivo INI. Generalmente en este tipo de archivos se guardan configuraciones realizadas por el usuario y que se quieren conservar un cierto tiempo para que no tenga que volver a realizar la taréa cada vez que se inicie el programa.
Por ejemplo, si toda la semana van a imprimir en formulario continuo, sería cómodo que guardara como predeterminada la impresora matricial hasta que se realize una nueva elección por que la nueva taréa requiere de una impresora Laser. Es decir que mantenga la selección hasta que el usuario la vuelva a cambiar.
Si no entendí mal y la idea es esa, podrias hacer:
Código Delphi
[-]
...
implementation
uses Printers, IniFiles;
var
Prn: TPrinter;
procedure TForm1.FormCreate(Sender: TObject);
var
s: string;
begin
with TIniFile.Create('YourApp.ini') do
try
Prn:= TPrinter.Create;
ComboBox1.Items:= Prn.Printers;
ComboBox1.ItemIndex:= 0;
s:= ReadString('Impresora', 'Actual', ComboBox1.Text);
ComboBox1.ItemIndex:= ComboBox1.Items.IndexOf(s);
Prn.PrinterIndex:= Prn.Printers.IndexOf(s)
finally
Free
end
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Prn.PrinterIndex:= Prn.Printers.IndexOf(ComboBox1.Text)
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
with TIniFile.Create('YourApp.ini') do
try
WriteString('Impresora', 'Actual', Prn.Printers[Prn.PrinterIndex])
finally
Free
end;
if Assigned(Prn) then Prn.Free;
end;
end.
Con el mismo resultado podés utilizar el registro de windows para almacenar la selección.
Saludos.