![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
|
edit + listbox
Alguien sabes como hacer para ir escribiendo un articulo en un edit y se vaya filtrando en un listbox dependiendo de la palabra ingresada?
Ejemplo: Si pongo "A" en el edit me aparecen : ALFOMBRAS, ARANDELAS, AURICULARES, AUTOS.. y si pongo "AU" me aparezcan AURICULARES, AUTOS.. desde ya muchas gracias! |
|
#2
|
||||
|
||||
|
Hola fedee.
Se me ocurre que podés aprovechar el evento OnChange del Edit: Código:
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
int i = 0;
boolean Found = FALSE;
while(i < ListBox1->Count && !Found) {
Found = ListBox1->Items->Strings[i].SubString(1,Edit1->Text.Length()) == Edit1->Text;
i++;
}
if(Found)ListBox1->ItemIndex = i-1;
}
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 05-06-2011 a las 00:24:12. |
|
#3
|
|||
|
|||
|
ecfisa: Antes q nada te remil agradezco por tu ayuda.. pero copie tal cual eso en el OnChange pero no sale nada.. q sera?
edit: ahi medio q supe resolverlo pero yo queria q se vayan filtrando.. osea q vayan desapareciendo los q no cumplen con las letras ingresadas.. me explico? |
|
#4
|
||||
|
||||
|
Hola fedee.
Cita:
Código:
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
int i;
boolean Found= FALSE;
/* Eliminar no coincidentes */
for(i=0;i<ListBox1->Count;i++)
if(ListBox1->Items->Strings[i].SubString(1,Edit1->Text.Length()) !=
Edit1->Text) ListBox1->Items->Delete(i);
/* Posicionarse */
for(i=0;i< ListBox1->Count && !Found; i++){
Found = ListBox1->Items->Strings[i].SubString(1,Edit1->Text.Length()) ==
Edit1->Text;
}
ya no tendrá disponible los otros items. Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
|
#5
|
|||
|
|||
|
si, ahi vi.. creo q me quedo con el anterior! si llegas a resolverlo te lo remil agradeceria!!
![]() |
|
#6
|
||||
|
||||
|
Hola fedee.
Fijate si de este modo hace lo que estas buscando: Código:
...
TStrings *TS = new TStringList;
void __fastcall TForm1::FormShow(TObject *Sender)
{
int i;
for(i=0;i < ListBox1->Count; i++)
TS->Add(ListBox1->Items->Strings[i]);
}
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
int i;
boolean Found= FALSE;
for(i=0;i<ListBox1->Items->Count;i++)
if(ListBox1->Items->Strings[i].SubString(1,Edit1->Text.Length()) !=
Edit1->Text) ListBox1->Items->Delete(i);
for(i=0;i< ListBox1->Items->Count && !Found; i++)
Found = ListBox1->Items->Strings[i].SubString(1,Edit1->Text.Length()) ==
Edit1->Text;
if (Found)
ListBox1->ItemIndex = i-1;
else {
for(i=0; i< TS->Count; i++)
ListBox1->Items->Strings[i] = TS->Strings[i];
ListBox1->ItemIndex = -1;
}
}
...
En el evento OnChange del TEdit si al finalizar la búsqueda incremental no se encontro ninguna coincidencia, se restaura la lista inicial en el TListBox desde el TStringList. Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 06-06-2011 a las 03:24:36. |
|
#7
|
|||
|
|||
|
ecfisa:
Hice todo y anda bien.. el tema es q cuando borro no se vuelven a todos los items del listbox.. solo cuando se hace el formshow.. Última edición por fedee fecha: 06-06-2011 a las 03:12:00. |
|
#8
|
||||
|
||||
|
Hola.
Si de ese modo, la restaura cuando después de escribir no encuentra más coincidencias. Para que lo haga cuando el Edit esté vacío, reemplaza estas líneas: Código:
if (Found)
ListBox1->ItemIndex = i-1;
else {
for(i=0; i< TS->Count; i++)
ListBox1->Items->Strings[i] = TS->Strings[i];
ListBox1->ItemIndex = -1;
}
Código:
if (Found)
ListBox1->ItemIndex = i-1;
if(Edit1->Text.Length() == 0){
for(i=0; i< TS->Count; i++)
ListBox1->Items->Strings[i] = TS->Strings[i];
ListBox1->ItemIndex = -1;
}
Código:
for(int i=0; i< TS->Count; i++)
ListBox1->Items->Strings[i] = TS->Strings[i];
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 06-06-2011 a las 03:37:35. |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| agregar y/o eliminar items de un listbox a partir de otro listbox | Goyo | PHP | 2 | 27-09-2007 16:46:30 |
| Realizar búsquedas en un ListBox mediante un Edit | Lester | Varios | 5 | 08-06-2007 19:16:18 |
| Unir Edit con Edit | Caral | Varios | 8 | 17-11-2006 21:37:35 |
| problemas con el el .Edit: qryCONSULTA.Edit | McRose | Conexión con bases de datos | 3 | 07-06-2005 15:46:39 |
| seleccion de listbox a edit | migueilichenco | Varios | 3 | 15-11-2003 04:39:14 |
|