PDA

Ver la Versión Completa : Capturar hijo de objeto


hernandoh
08-05-2017, 05:21:09
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

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/enumerar-recorrer-listar-objetos-de-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. ^\||/