FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Buscar elemento en listbox
Buenas,
Estoy intentando encontrar la manera que según el contenido de un edit.txt se posicione el cursor en un listbox. He hecho lo siguiente:
Pero este código posiciona el cursor siempre que la coincidencia sea exacta, y a mi me gustaría que se posicionara cuando coincida el inicio del elemento del listbox, es dir, si en el edit.txt escribo 'ab' se posicione al primer elemento que empieze por ab. Estoy leyendo que no es posible. Si no es posible, hay algún componente que lo permita? Gracias Última edición por mblascog fecha: 05-05-2016 a las 23:55:47. |
#2
|
||||
|
||||
En donde dice que no es posible?
Lo podes implementar "a mano", o podes buscar por "ComboBox incremental search". En Delphi 7 creo que no esta implementado, pero en realidad el que lo implementa es el control ComboBox de Windows que la VCL envuelve, con enviar un mensaje usando la API de Windows lo podes lograr La otra forma es implementarlo uno mismo Debes recorrer los strings contenidos en tu combo, comparar cada uno con la cadena de texto que esta ingresada en el combo en ese momento, y si hay coincidencia parcial, poner ese elemento como seleccionado y cortar el bucle
Creo que este es un inicio Edito: Perdon, lei mal, hablas de TListBox, pero creo que el concepto es el mismo |
#3
|
|||
|
|||
Gracias AgustinOrtu. Creo que defiere un poco entre el ComboBox y el ListBox. SeltStart y SelLength no están implementadas en ListBox.
Había pensado en la implementación manual, y voy a hacerlo ahora, pero me da la sensación que debe ser lento, pues además de buscar si por el contenido del edit empieza algún elemento del listbox (ordenado), tienes que comprobar cuando se haya pasado, para no hacer todo el bucle |
#4
|
||||
|
||||
Con esto te debería valer:
Te selecciona el primero que coincida o no te selecciona ninguno si no hay elemento coincidente. Si cambias AnsiStrLIComp (case-insensitive) por AnsiStrLComp (case-sensitive) conseguirás que distinga o no por may/min.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
|||
|
|||
Muchas gracias, funciona perfecto, aunque para optimizarlo, ya que la lista contiene muchos ítems, está bien controlar que cuando se ha pasado de largo salga del bucle
|
#6
|
|||
|
|||
Para optimizar había pensado con este if:
Pero no funciona, pues Ló es más grande que Lu, con esto quiero decir que, si por ejemplo busco Lucena no lo encuentra, dado que antes encuentra López y al ser mayor, sale del bucle |
#7
|
||||
|
||||
Cita:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
modificar un elemento de un listBox | PaulaGV | Internet | 4 | 14-04-2012 01:14:10 |
Problemas para deseleccionar un elemento de un listbox | neon | OOP | 5 | 19-08-2011 16:00:18 |
Buscar un elemento en un array sin recorrerlo | David | OOP | 3 | 23-07-2011 16:15:40 |
Buscar dentro del ListBox | FrianxD | C++ Builder | 9 | 06-03-2008 07:20:27 |
Elemento seleccionado de un ListBox | Tecnic2 | OOP | 12 | 22-05-2007 11:39:18 |
|