Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 12-08-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.439
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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:
Empezado por Ralevi Ver Mensaje
-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?

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:
Código Delphi [-]
    ....

    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


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.


Código Delphi [-]
var
  comp:Tcomponent;
  i:integer;
begin
  ...
  for i := 1 to 20 do begin
    comp := FindComponent('Label' + i.ToString);     // buscar el componente `pòr el nombre
    if Assigned(comp) then                                  // si lo ha encontrado....
      listaLabels.Add(TLabel(comp));                     // lo añade a la lista
  end;

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.
Código Delphi [-]
  Lista1.Add(Label1);
o 
  listaLabels.Add(TLabel(comp));

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.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 08:23:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi