PDA

Ver la Versión Completa : Mostrar el Item seleccionado en TListview


Jose Roman
18-10-2019, 06:47:50
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
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:
'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:

http://img.fenixzone.net/i/HJqLgbS.png

Jose Roman
18-10-2019, 19:51:22
Encontre por fin un codigo que me muesta el item seleccionado al dar clic:

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
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:
ListView1.ItemAppearanceObjects.HeaderObjects.Text.Visible := False;
o esto:
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
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: