![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
Manejar un TList
Buenas, sigo experimentando.
![]() Creo un form con varios Label y SpinBox, y uso Tlist para manejarlos. Este es mas o menos el sistema: En principio funciona bien, las consultas son: -La estoy liando y hay métodos mas sencillos?? -La variable idx tiene que ser diferente para cada List o si le asigno valor 0 antes de asignar la segunda valdría? -Como todas las variables se declaran en el procedimiento FormCreate no se podrá acceder a los datos desde otra parte del código. ¿Se podria declarar en un procedimiento externo? Gracias anticipadas. Última edición por ecfisa fecha: 12-08-2021 a las 00:39:09. Razón: Agregar etiquetas [DELPHI] al codigo |
|
#2
|
||||
|
||||
|
Hay varias cosas a comentar, sin saber muy bien para qué quieres utilizar la estructura, sí que hay cosas que puedes mejorar.
Se me ocurre que puedes usar listas específicas (usando genéricos TList<T>): Código:
var listaLabels:TList<TLabel>; listaSpinBox:TList<TSpinBox>; begin listaLabels := TList<TLabel>.Create; listaSpinBox := TList<TSpinBox>.Create; Cita:
Los elementos (variables, objetos,...) que necesites utilizar desde otros procedimientos del pformulario, puedes definirlos en la parte privada de la clase. Al final de la clase del formulario tienes esto:
Lo que definas en el private sólo es accesible desde dentro de esta unit, lo que definas en la parte public será accesible desde otras units. Para añadir los Labels y los Spinbox a las listas puedes usar un bucle FOR y utilizar el método FindComponent que te permite acceder a un componente a partir del nombre.
En cuanto a lo que comentas de la variable idx, siplemente es la posición en que el elemento se añade a la lista. Como en este caso no te interesa esa información no hare falta ni que la asignes.
Si vas a usar un for para recorrer los componentes, puedes usar el mismo, incluso para asignar el texto también. Algo así: Código:
var
i: Integer;
comp:Tcomponent;
listaLabels:TList<TLabel>;
listaSpinBox:TList<TSpinBox>;
begin
// Lista1 := Tlist.Create;
listaLabels := TList<TLabel>.Create;
listaSpinBox := TList<TSpinBox>.Create;
for i := 1 to 20 do begin
// Buscar el Label por nombre
comp := FindComponent('Label' + i.ToString);
// Si lo ha encontrado, lo añadimos a la lista...
if Assigned(comp) then begin
listaLabels.Add(TLabel(comp));
// asiganr el texto del memo
TLabel(comp).Text := Memo1.Lines[i];
end;
// Buscar el spinbox por nombre (SpinBox1, SpinBox2, SpinBox3,...
comp := FindComponent('SpinBox' + i.ToString);
// Si lo ha encontrado, lo añadimos a la lista...
if Assigned(comp) then
listaSpinBox.Add(TSpinBox(comp));
end;
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 12-08-2021 a las 09:41:03. |
|
#3
|
|||
|
|||
|
Muchas gracias por una respuesta tan extensa.
Voy a experimentar todo lo que me comentas, ale ya tengo entretenimiento para unas tardes ![]() Saludos |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| ordenar un TList | elcigarra | OOP | 27 | 24-01-2009 00:22:34 |
| Problemas con TList | air_erik | OOP | 9 | 09-02-2008 22:49:27 |
| Uso del Objeto TList | aromero | OOP | 10 | 21-10-2005 17:30:11 |
| Problemas con TList | arantzal | .NET | 2 | 09-12-2004 09:14:37 |
| TList | HERNAN | Varios | 2 | 10-10-2003 03:47:59 |
|