FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#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 |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
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 |
|