¡¡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...
Es un TComboBox cargado, cargado de ...
Comenzado por
TiammatMX
, feb 01 2011 03:13
5 respuestas en este tema
#1
Escrito 01 febrero 2011 - 03:13
#3
Escrito 01 febrero 2011 - 04:52
Saludos.
Link1
Éste es el "bueno", me permitió hacer un pequeño procedimientito para obtener los nombres...
delphi
procedure TfrmCnfgrcn.RefreshPrinterList; var i : integer; Imprsrs : TPrinter; txt : string; begin cbPrinterList.Items.Clear; Imprsrs := TPrinter.Create; for i := 0 to Imprsrs.Printers.Count -1 do begin txt := Imprsrs.Printers.Strings[i]; cbPrinterList.Items.Add(txt); end; Imprsrs.Destroy; end;
¿Resuelto? Por el momento, pero espero que más aportaciones redondeén una buena funcionalidad..., gracias, Rolphy.
#4
Escrito 01 febrero 2011 - 04:55
Saludos
Te recomiendo que pongas el codigo en un bloque Try/Finally.
Te recomiendo que pongas el codigo en un bloque Try/Finally.
#5
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:
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.
delphi
procedure TfrmCnfgrcn.RefreshPrinterList; var Imprsrs : TPrinter; begin cbPrinterList.Items.Clear; Imprsrs := TPrinter.Create; try { Puedes asignar directamente los items (TStrings) al combobox } cbPrinterList.Items := Imprsrs.Printers; finally Imprsrs.Free; end; 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.
#6
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).
Saludos
delphi
procedure TfrmCnfgrcn.RefreshPrinterList; begin cbPrinterList.Items := Printer.Printers; end;
Saludos