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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
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 |
|