Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Mostrar el Item seleccionado en TListview (https://www.clubdelphi.com/foros/showthread.php?t=94246)

Jose Roman 18-10-2019 06:47:50

Mostrar el Item seleccionado en TListview
 
Cordial saludo,

Tengo una base de datos MySql con una tabla MESAS y que tiene los campos ID_MESA de dos caracteres y DESCRIPCION de 15 caracteres, en un ListView muestro el campo DESCRIPCION, mi pregunta es:

Como capturo el campo ID_MESA al dar clic el usuario en un item del ListView que solo muestra el campo DESCRIPCION.

Gracias por su ayuda, soy novato en FIREMONKEY.

Neftali [Germán.Estévez] 18-10-2019 10:13:12

Cita:

Empezado por Jose Roman (Mensaje 533998)
Tengo una base de datos MySql con una tabla MESAS y que tiene los campos ID_MESA de dos caracteres y DESCRIPCION de 15 caracteres, en un ListView muestro el campo DESCRIPCION, mi pregunta es:

Como capturo el campo ID_MESA al dar clic el usuario en un item del ListView que solo muestra el campo DESCRIPCION.


Puedes hacerlo utilizando la Base de Datos:
Código Delphi [-]
'SELECT ID_MESA FROM MESAS WHERE DESCRIPCION=' + QuotedStr(strDescripcion);


Otra opción de guardarte en memoria una lisa con correspondencias entre ID_MESA y DESCRIPCION. Puedes ser un ClientDataset, TStringList, un Array,...


En el propio TListView puedes añadir tanto la descipción como el ID y dejar oculto el que no te interese, pero mantener la información.

Jose Roman 18-10-2019 19:16:26

Gracias Neftali por responder,

Bueno quizas no me explique bien, es una aplicacion para android la que estoy realizando, el mesero al dar clic en un boton, aparecera una ventana emergente donde muestra las mesas que estan disponibles que es el campo DESCRIPCON, al seleccionar automaticamente se cerrara la ventana y lo ideal de ello es capturar el campo ID_MESA al dar clic el usuario en alguno de los items, el diseño el cual creo que tengo oculto ID_MESA mas no sabria como capturar alguno de los dos campos para guardarlo en una variable, aqui esta el diseño:


Jose Roman 18-10-2019 19:51:22

Encontre por fin un codigo que me muesta el item seleccionado al dar clic:

Código Delphi [-]
procedure TForm1.ListView1ItemClick(const Sender: TObject;
  const AItem: TListViewItem);
var
  S :  TListViewItem;
begin
  S :=  TListViewItem(ListView1.Items.Item[ListView1.Selected.Index]);
  ShowMessage(S.Text);
end;

Solo queda por saber Neftali esta parte que me respondiste:

"En el propio TListView puedes añadir tanto la descipción como el ID y dejar oculto el que no te interese, pero mantener la información."

¿Como accedo a la parte oculta? en este caso ID_MESA y no se si esta bien hecho como lo mostre en la imagen enterior.

Neftali [Germán.Estévez] 24-10-2019 08:58:36

Cita:

Empezado por Jose Roman (Mensaje 534005)
Solo queda por saber Neftali esta parte que me respondiste:
"En el propio TListView puedes añadir tanto la descipción como el ID y dejar oculto el que no te interese, pero mantener la información."


Bueno estaba pensando en utilizar alguno de os cammpos del Header y luego puedes ocultarlos por código utilizando algo como esto:
Código Delphi [-]
ListView1.ItemAppearanceObjects.HeaderObjects.Text.Visible := False;
o esto:
Código Delphi [-]
ListView1.ItemAppearance.HeaderHeight := 0;


Simplemente es poner el dato para tenerlo, pero ocultarlo si no te interesa que se vea.

Nada muy sofisticado.

Jose Roman 05-11-2019 04:35:57

Gracias Neftali, una buena forma de utilizar el Header y pude asignarle el valor, lo que no se es como acceder al valor que se encuentre almacenado ahi, teniendo en cuenta el item que haya seleccionado el usuario, en este caso en el Header quedo los valores 01,02,03,etc que son los ID.

ASAPLTDA 13-01-2022 02:20:07

sincronizar ListView con ClientDataset
 
Gracias por el aporte de usar texto para acomodar la clave,
Encontre esta forma de sincronizar el listview con el tclientdataset en un manual: Delphi GUI Programming
with FireMonkey editorial Packt me costo 5$Us en promocion vale la pena compralo por dos cosas :el contenido y por apoyar a los escritores delphi (nota en Ingles)

bindSourceDB
clientdataset
* ----->listView.synch

Una todos los campos del ClientDataSet represntados por (*) con la propiedad Listview.Synch.
En listview.evento.OnItemClick
begin
Int:= clientdataSet.fieldbyname('ID').AsInteger;
end
Y listo la solucion :eek:


La franja horaria es GMT +2. Ahora son las 09:13:53.

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