Ver Mensaje Individual
  #2  
Antiguo 10-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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;

(* Cargar impresoras en combo, seleccionar última usada *)
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;

(* Seleccionó otra impresora *)
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Prn.PrinterIndex:= Prn.Printers.IndexOf(ComboBox1.Text)
end;

//...

(* Guardar ultima impresora seleccionada *)
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  // asegurarnos...
    Prn.Free;
end;
end.
Con el mismo resultado podés utilizar el registro de windows para almacenar la selección.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita