Ir al contenido


Foto

Es un TComboBox cargado, cargado de ...


  • Por favor identifícate para responder
5 respuestas en este tema

#1 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 01 febrero 2011 - 03:13

¡¡IMPRESORAS!!

Compañeros, necesito cargar a un TComboBox las impresoras presentes en cada computadora, para que el usuario seleccione la de su preferencia. Obviamente, ésto incluye las impresoras de red y cualquier dispositivo para obtener salidas "duras"...

Como siempre, agradeciendo de antemano todas sus colaboraciones, chistes, código, invitaciones a salir al cine...
  • 0

#2 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 01 febrero 2011 - 03:30

Saludos.

Link1

Me imagino que este también te servirá.
  • 0

#3 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 01 febrero 2011 - 04:52

Saludos.

Link1


Éste es el "bueno", me permitió hacer un pequeño procedimientito para obtener los nombres...



delphi
  1. procedure TfrmCnfgrcn.RefreshPrinterList;
  2. var
  3.   i : integer;
  4.   Imprsrs : TPrinter;
  5.   txt : string;
  6. begin
  7.   cbPrinterList.Items.Clear;
  8.   Imprsrs := TPrinter.Create;
  9.   for i := 0 to Imprsrs.Printers.Count -1 do
  10.   begin
  11.     txt := Imprsrs.Printers.Strings[i];
  12.     cbPrinterList.Items.Add(txt);
  13.   end;
  14.   Imprsrs.Destroy;
  15. end;



¿Resuelto? Por el momento, pero espero que más aportaciones redondeén una buena funcionalidad..., gracias, Rolphy.
  • 0

#4 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 01 febrero 2011 - 04:55

Saludos

Te recomiendo que pongas el codigo en un bloque Try/Finally.
  • 0

#5 bigleaguer

bigleaguer

    Advanced Member

  • Miembros
  • PipPipPip
  • 66 mensajes

Escrito 01 febrero 2011 - 05:49

Tal como dice Rolphy, también te recomiendo que coloques el código dentro de un bloque Try. Quedando algo como esto:


delphi
  1. procedure TfrmCnfgrcn.RefreshPrinterList;
  2. var 
  3.   Imprsrs : TPrinter;
  4. begin
  5.   cbPrinterList.Items.Clear;
  6.   Imprsrs := TPrinter.Create;
  7.   try 
  8.     { Puedes asignar directamente los items (TStrings) al combobox } 
  9.     cbPrinterList.Items :=  Imprsrs.Printers;
  10.   finally
  11.     Imprsrs.Free;
  12.   end;
  13. end;


De esta forma te aseguras de que se libera el objecto, inclusive si ocurre una excepción dentro del bloque try. Por ultimo no es recomendable llamar al método Destroy directamente. Se recomienda usar el método Free que cumple la misma tarea pero antes verifica que el objecto no sea nulo ó que se encuentre asignado.
  • 0

#6 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 mensajes

Escrito 02 febrero 2011 - 01:30

Puedes ahorrar incluso más lineas de código llamando al objeto global Printer, definido en la unit printers.pas (en realidad Printer no es un objeto sino una función que devuelve un objeto del tipo TPrinter; dicho objeto no está creado desde el principio, sino que se crea la primera vez que llamas a esta función y se destruye al cerrar la aplicación).



delphi
  1. procedure TfrmCnfgrcn.RefreshPrinterList;
  2. begin
  3.   cbPrinterList.Items := Printer.Printers;
  4. end;



Saludos
  • 0




IP.Board spam blocked by CleanTalk.