Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Capturar hijo de objeto (https://www.clubdelphi.com/foros/showthread.php?t=91822)

hernandoh 08-05-2017 05:21:09

Capturar hijo de objeto
 
Hola a todos, estoy elaborando un proyecto en FMX y tengo una duda, me gustaría saber si alguien me ayuda a resolverlo.

Resulta que tengo una funcion que crea un ListBoxItem en tiempo de ejecución, este item tiene una estructura elaborada en los estilos y agrego los datos como parámetros a los objetos que la componen usando styleData.

Mi duda es como obtener los datos de los hijos del item (los objeto que componen el item) con un procedimiento.

Esto es la creacion del item
Cita:

item : tListBoxItem;
foto : TImage;
objeto : TFmxObject;
begin
item.styleLockup := Listitem; // estilo

item.styleData['titulo'] := 'Lentejas';
item.styleData['precio'] := '2300';
item.styleData['compartir.Onclick'] := compartirClick; // procedimiento para compartir a item

objeto := item.ResourceStyle['imagen']; // no se si esta bien escrito, el proyecto lo tengo en otra pc
foto := TImage(objeto);
foto.bitmap := rutaImagen; // rutaimagen es un parámetro

obj.addObject(item); // obj es el padre del item
end;
los elementos titulo, y precio son TLabel, compartir es un TButton e imagen es un TImage que cree en el diseñador de estilos de delphi.

ahora en el procedimiento "compartirClick" una de las cosas que necesito que haga es capturar los datos de los hijos de item es decir los datos que tienen titulo,precio e imagen pero no tengo idea de como hacerlo.

De ante mano muchas gracias y espero me puedan ayudar.

Posdata: no he leído la guía de estilo pero hice lo que pude con lo que deduje.

jhonny 08-05-2017 06:18:27

Según como entiendo la problemática, podrías crear una clase con la estructura que llevas en cada Item y guardar eso en por ejemplo un TList<> de esos objetos, otra opción sería incluso guardar esos objetos en la propiedad TagObject del Item.

Personalmente para este caso lo haría como acabo de decírtelo... sin embargo también existe la posibilidad de recorrer los objetos como se explica en http://purodelphi.com/2016/03/23/enu...un-tfmxobject/

hernandoh 08-05-2017 22:35:13

Vale, revisaré lo que me dices, si algo no va bien lo comentaré muchisimas gracias.

juniorSoft 02-07-2017 13:57:50

Buena Pregunta, Excelente Respuesta, estaba precisamente buscando una solución efectiva para este caso e invente mi función recursiva para encontrar el control buscado pero tenia algunos inconvenientes
porque cuando le pasaba como parámetro el control contenedor no encontraba los hijos del tabitem ejemplo si ejecutaba mifuncion(TabCotrol.Tabs[0]); encontraba el TabItemcontent pero el TabItemContent indicaba que no tenia hijos sabiendo que los tenia. Para mi caso la mejor solución es hacer lo que dice jhonny asgnarle el control al tabObject del contenedor el componente que deseo tener a mano, así lo tengo fácil; también me gusto la forma que planteas en el link para buscar controles. ^\||/


La franja horaria es GMT +2. Ahora son las 14:37:25.

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