delphi - poo - ¿Cómo asignar objetos de ListBox a ArrayList en una sola declaración?
instanciar un arraylist (3)
En Delphi Prism, necesito asignar objectcollection desde ListBox a ArrayList en una sola instrucción. Hasta ahora no he encontrado ninguna solución.
En Delphi, así es como lo hice.
theUser.Groups.Assign(ListBox1.Items);
Grupos es un TList en Delphi y ArrayList en Delphi Prism. Cuando traté de hacer lo mismo en Delphi Prism, me da los siguientes errores.
"Groups.TGroupList" no contiene una definición para "Assign" en la expresión "theUser.groups.Assign"
Si ArrayList no tiene un método que acepte la colección de objetos, tendré que recorrer cada objeto en los elementos de ListBox y agregarlo a ArrayList.
¿Como lo harias?
Gracias por adelantado.
Debería usar el método AddRange()
de ArrayList
.
El equivalente a tu código Delphi es:
theUser.Groups.Clear();
theUser.Groups.AddRange(ListBox1.Items);
No probado:
theUser.Groups.AddRange(ListBox1.Items)
ArrayList.AddRange
acepta la interfaz ICollection
que implementa ListBox.ObjectCollection
.
Ver también:
http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.objectcollection.aspx
http://msdn.microsoft.com/en-us/library/system.collections.arraylist.addrange(VS.71).aspx
Si no necesita agregarlo a una lista existente pero solo lo necesita en una lista, también puede usar LINQ:
lbMyListBox.Items.Cast<String>().ToList();
La llamada a Cast () podría reemplazarse por OfType () si solo desea seleccionar elementos de un cierto tipo en lugar de invocar un error de conversión con elementos no válidos, como lo hace Cast.