FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Seleccionar un ítem de un ListView
Tengo este formulario con un TListView.
y este código: Código:
void __fastcall TfSelMun::ListaSelectItem(TObject *Sender, TListItem *Item, bool Selected) { pItem = NULL; Button1->Enabled = false; if (Selected) { pItem = Item; Button1->Enabled = true; } } //--------------------------------------------------------------------------- Al seleccionar un ítem del ListView y pasar por la función el valor de Item de la llamada es el correcto (por ejemplo el de la imagen, VALETIN (COAÑA)), pero al pasar la línea pItem = Item en la variable pItem no está ese valor si no el del primer elemento de la tabla, no sé si he sabido explicarme; aparece esto: Cita:
|
#2
|
||||
|
||||
Hola Angel.Matilla.
En la parte veo de tu código no estas haciendo nada mal. Si comparas los valores de la propiedad Caption inmediatamente después de la asignación, Código:
pItem = Item; Para verificar lo que te comento, hacé esta simple prueba en el evento OnSelectItems del TListView: Código:
... void __fastcall TForm1::ListView1SelectItem(TObject *Sender, TListItem *Item, bool Selected) { pItem = Selected ? Item : NULL; if (Selected) ShowMessage(Item->Caption+" "+pItem->Caption); }
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#3
|
||||
|
||||
Gracias por la respuesta pero algo no funciona bien. Con el código que me has sugerido tengo esto:
Esto está sacado con el depurador una vez que se ha ejecutado la línea pItem = Selected ? Item : NULL;, y como pudes ver el caption de ambos elementos es distinto. He cambiado algo en el código desde el que llamo a este formulario, que es una pantalla de ayuda; ahora está así: Código:
Application->CreateForm(__classid(TfSelMun), &fSelMun); for (; !fSocios->Query->Eof; fSocios->Query->Next()) { pItem = fSelMun->Lista->Items->Add(); pItem->Caption = fSocios->Query->FieldByName("Poblacion")->AsString; pItem->SubItems->Add(fSocios->Query->FieldByName("CodPostal")->AsString); } fSelMun->Lista->Items->Item[0]->Selected = true; fSelMun->Lista->Selected->MakeVisible(true); pItem = NULL; if (fSelMun->Lista->Items->Count > 1) fSelMun->ShowModal(); if (pItem != NULL) { if (Cpostal->Text.IsEmpty()) Cpostal->Text = pItem->SubItems->Strings[0]; Poblacion->Text = pItem->Caption; } delete fSelMun; Código:
void __fastcall TfSelMun::ListaSelectItem(TObject *Sender, TListItem *Item, bool Selected) { Button1->Enabled = false; pItem = Selected ? Item : NULL; if (Selected) Button1->Enabled = true; } Siendo ese el registro que está realmente seleccionado en el ListView, pero cuando vuelvo al formulario desde el que se ha llamado ¡pItem viene vacío! He probado usando una variable auxiliar y curiosamente me funciona bien, pero es ya más una cuestión de orgullo. |
#4
|
||||
|
||||
Hola Angel.Matilla.
Cita:
Copié los datos de tu imágen en un TListView y usando el código que te sugerí en el evento OnSelectItem, en todos los casos la propiedades Caption de Item y pItem se corresponden. Te ajunto el código fuente de la prueba para que lo revises con tranquilidad. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 25-09-2014 a las 02:45:25. |
#5
|
||||
|
||||
Estoy de acuerdo en tu idea, pero no soy capaz de ver dónde ocurre. No obstante, y como ves en la última imagen que he subido, sí tienen el mismo valor. Voy a probar definiendo un TLisItem sólo para ese módulo y, por supuesto, miraré tú código con lupa
|
#6
|
||||
|
||||
Vale. Creo que ya lo solucioné. El problema reside en un error de concepto mío: para "ahorrarme" tiempo defino una serie de variables auxiliares que uso indistintamente en diversos sitios de la aplicación. Lo que pasa es que a veces esas variables que uso en un formulario tiene en otro que está debajo otro valor que es el que se recupera al volver a él. Lo he arreglado definiendo una varable en el formulario donde se me daba el problema.
|
#7
|
||||
|
||||
Hola Angel.Matilla.
Otra cosa que podrías revisar es el ámbito de la variable pItem, ¿Algún otro form que TfSelMun tiene acceso a ella ? Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#8
|
||||
|
||||
Sí. Eso tengo que cambiarlo; es una mala manía mía.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema al insertar item en ListView | avechuche | Varios | 2 | 06-07-2013 01:32:40 |
Seleccionar item de combobox | forgiveness | Conexión con bases de datos | 1 | 16-11-2009 20:00:23 |
seleccionar item en TdbLockupListbox!!!!!! | david_uh | Varios | 1 | 22-05-2007 19:19:10 |
Seleccionar un item de un List Box | zvf | OOP | 2 | 06-04-2006 16:45:38 |
Posicionar un ListView en su último Item. | DarkByte | OOP | 3 | 04-12-2004 20:22:42 |
|