Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Propiedades en listbox - Listbox vs TGrid otras opciones (https://www.clubdelphi.com/foros/showthread.php?t=84797)

vicens22 07-12-2013 00:17:55

Propiedades en listbox - Listbox vs TGrid otras opciones
 
Sigo intentando avanzar con el desarrollo para móviles (Android / IOS).

He creado una sencilla aplicación que conecta con una base de datos vía datasnap y visualiza en un listbox los registros de una tabla de clientes.
Muestro un tlistbox con los datos básicos de la tabla (nombre empresa y teléfono), he conectado utilizando livebindings las propiedades listbox.item.text con el campo empresa y listbox.item.detail con el teléfono, de forma que me muestra según lo que pretendía el nombre de la empresa y debajo el teléfono. Hasta aquí todo correcto.

Ahora quería conseguir que al seleccionar una fila del listbox, se activara otro formulario mostrando una ficha más completa del cliente.
El problema con el que me encuentro al llegar a este punto, es que necesito guardar en alguna propiedad del listbox el campo id del cliente para poder pasarlo como parámetro al clientdataset del formulario que mostrará la ficha completa, pero no encuentro ningún campo que pueda relacionar desde el livebindings en el listbox, ya que como campos de cada item del listbox solo encuentro los dos citados: text y detail, los cuales muestran la primera y segunda fila de cada registro del listbox.

Mi pregunta es si no existe alguna propiedad en el objeto listbox que pueda servirme para almacenar el comentado id del cliente o cual sería la alternativa más correcta para lo que busco ??

Mi otra duda es si existe algún otro componente que sea más completo o apropiado que el listbox. Tal vez el tGrid u otro similar permitiría lo que pretendo de forma más sencilla ??

Gracias por cualquier comentario o ayuda.
Saludos,

Vicens

quimeras 10-12-2013 10:27:36

Efectivamente Vicens ese es uno de los problemas que me encontré y que me dio muchísimos quebraderos de cabeza, la única solución válida que encontré es utilizar en el ListView el Item.ButtonText para enlazarlo con el id y utilizar ese dato para buscar el resto de los valores de los campos de la tabla.
Existen rejillas mas completas para Firemonkey como TMS o Infopower, pero no las he probado. Ambas son de pago.

vicens22 10-12-2013 16:12:12

Hola,

Como comentaba yo estoy utilizando el componente tListBox.
El componente tListView no lo he probado aún, pero acabo de ver que como dices tiene esa propiedad ButtonText.
Sabes que diferencias hay entre ambos (tListbox vs tListView) ??

Puedo igualmente insertar un tSearchBox para realizar búsquedas directamente en el tListView igual que hago en el tListBox ??


Gracias por tu ayuda.
Saludos,

Vicente

pape19 22-08-2014 14:44:54

Alguien pudo resolver este problema?

edgargh 22-08-2014 20:30:15

Que tal, se supone que desde livebindings (Bind Visually) puedes relacionar tu listbox o listview con tu bindsource a traves de la propiedad Synch y con eso tu control se sincroniza con tu fuente de datos, de tal forma que al moverte en el control te mueves en la fuente de datos

chaosego 25-08-2014 11:23:04

Hola Vicens, veo dos opciones para tu problema, aunque seguro que hay más.
La primera usar los TClassHelper para modificar los ListItem añadiendo las propiedades que mas te interesen.
La segunda es crear tu propio Item (ya sea para TListBox o para TListView), mira los ejemplos que vienen con delphi, vienen las formas de hacerlo para ambas listas.
La solución de los DataBindings es tambien muy acertada y puede complementar la creación de un Item personalizado enlazando a las nuevas propiedades que incluyas.

AgustinOrtu 13-10-2014 07:47:28

En realidad no es tan complicado como dicen, al moverse en tu control visual (listbox, listview, grid, etc) enlazado a traves de Live Bindings a un TDataSet, el realmente se mueve es el TDataSet (tu tabla!), el control toma los datos que se le indicaron de la tabla y los muestra. Esto significa lo que tenes que pasarle al otro formulario es el campo Id de tu tabla, algo asi:

Código Delphi [-]
BindSourceN.DataSet.FieldByName('Id').AsInteger;

Sino lo que podes hacer es, en el otro form que va a hacer de ficha de datos, enlazar los controles a traves de live bindings con los campos de la tabla, ya que en ese momento va a estar apuntando al registro que necesitas

Un saludo!


La franja horaria es GMT +2. Ahora son las 09:03:41.

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