Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Matriz de objetos en Delphi (https://www.clubdelphi.com/foros/showthread.php?t=27252)

metalfox6383 16-11-2005 00:09:13

Matriz de objetos en Delphi
 
Hola:

Recuendo que en Visual Basic se podía crear una matriz de objetos con tan solo agregar el número de índice en la propiedad "Index". Pero eso no se puede directamente en Delphi, ¿cómo puedo hacer algo parecido en Delphi?

Gracias de antemano.

dec 16-11-2005 01:29:06

Hola,

No estoy seguro,... ¿te refieres a algo así?

Código Delphi [-]
 type
   TUnObjeto = class(TObject)
   private
     FUnaVariable: integer;
   public
     property UnaPropiedad: integer read FUnaVariable write FUnaVariable;
   end;
 
 var
   UnosObjetos: array[0..3] of TUnObjeto; // Array estático
   OtrosObjetos: array of TUnObjeto; // Array dinámico

metalfox6383 16-11-2005 03:52:14

Chévere! Gracias. No pensé que sería así de sencillo.

Delfino 16-11-2005 10:00:05

Tambien puedes usar la clase TObjectList

metalfox6383 16-11-2005 20:29:14

Interesante el objeto TObjectList, estuve leyendo pero no encuentro un ejemplo directo que me senseñe a usarlo. Puedes darme un ejemplo. Ya intenté creando una matriz de objetos con la sentencia "array", pero no me lo permite. Por favor, necesito ayuda. Gracias.

roman 16-11-2005 20:49:28

Cita:

Empezado por metalfox6383
pero no me lo permite

¿Y por qué no te lo permite? ¿Cómo lo haces?

// Saludos

Lepe 16-11-2005 20:59:20

Tip del dia: Busca por "TobjectList" en el foro, se ha hablado muy extensamente de él.

saludos

metalfox6383 17-11-2005 00:27:09

Ah, ya. Buscaré entonces.

Bueno, respondiendo a la pregunta anterior, cuando yo quería crear una matriz de objetos escribía la siguiente sentencia, debajo de "var"...:

var
matriz: array[0..5] of TLabel;

Por ejemplo, escribía esa sentencia, pero ocurre un error cuando compilo mi programa, sin embargo, cuando elimino la sentencia, el error ya no aparece y el programa corre normal. Por eso digo que no me permite crear la matriz de objetos. ¿Alguna solución? ¿Tengo que utilizar alguna unidad?

jachguate 17-11-2005 02:52:52

Cita:

Empezado por metalfox6383
Por ejemplo, escribía esa sentencia, pero ocurre un error cuando compilo mi programa...

Hola. Comprenderás que sin saber cual es el error que ocurre, resulta mucho mas dificil ayudarte.

Te invito a leer el hilo de la calidad de las preguntas

Hasta luego.

;)

metalfox6383 21-11-2005 03:45:16

¿Podrían darme el código de algún programa (pequeño y de muestra) donde se cree una matriz de objetos, pero que haya sido probrado? De forma que la copio y reviso si existe algún error.

MAngelito 22-11-2005 20:50:40

Puedes colocar primero un label en el form
 
A veces delphi no reconoce un rreglo de controles si inicialmente no existe el objeto, entonces puedes colocar un label o cualquier objeto que quieras utilizar, lo colocas en modo diseño y compilas, una vez que ha reconocido al objeto, lo puedes eliminar del formulario y seguir usando tu arreglo de controles. Incluso puedes redimensionar el arreglo:
Código Delphi [-]
 
var
miArray:array of TLabel;
i:integer;
begin
i:=0;
setLength(miArray,variableValorEntero);
for i=0 to 20 do
begin
  myarray[i]:=TLabel.Create(self);
  myarray[i].Left:=20;
  myarray[i].Top:=i*18;
  myarray[i].Caption:='Contenido';
  myarray[i].Parent:=QRBand2;  //donde lo colocaré, en este caso en una
                                           //banda de qreport (opcional) 
end
end;
espero te sirva

jachguate 22-11-2005 21:22:01

Cita:

Empezado por MAngelito
A veces delphi no reconoce un rreglo de controles si inicialmente no existe el objeto

Con esto supongo que te referís a que ocurre un error al intentar compilar, porque la unidad que contiene la clase no está declarada en la clausula Uses. No hace falta añadir ni borrar nada al formulario, simplemente añadir la unidad (por ejemplo Controls) a dicha clausula.

Hasta luego.

;)

pd. he editado tu mensaje para añadir la etiqueta delphi, que formatea el código. Te recomiendo su uso (para aprender como se usa, edita el mensaje anterior).

Hasta luego.

;)

MAngelito 22-11-2005 22:26:39

Ok jachguate
 
Tienes razón el error se debe a la falta de declaración en las librerías, solo que si se coloca en el formulario, se declara automaticamente, bueno esa era mi idea, aunque no la explique correctamente, tendré mas cuidado y comenzaré a usar etiquetas.

Gracias:)

nuk3zito 22-12-2005 17:03:32

En lo personal, prefiero usar el TStringList, es como el TObjectList pero en mi caso siempre procuro alamcenar ID's de mis objetos para una lectura rápida.
Chécalo, el TObjectList o el TStringList según el uso que les des son objetos muy útiles.
En la ayuda de Delphi viene un buen para el TStringList.

metalfox6383 30-12-2005 18:33:30

Gracias por toda la ayuda. No había leído los últimos comentarios, y recién lo acabo de hacer. Voy a volver a intentar crear una matriz de objetos y averiguar acerca del TObjectList. GRACIAS!


La franja horaria es GMT +2. Ahora son las 03:42:01.

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