PDA

Ver la Versión Completa : Matriz de objetos en Delphi


metalfox6383
16-11-2005, 00:09:13
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í?


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
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
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
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:

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
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
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!