¿Cuál es la forma correcta de implementar el comportamiento "encontrar según escribe" en un componente descendiente de TComboBox cuyo estilo es csOwnerDrawFixed?Cómo implementarlo mientras escribe en un descendiente de TComboBox
Respuesta
- Utilice un TTimer (vamos a llamarlo timIncSearch). Establezca (en tiempo de diseño) las siguientes propiedades: Habilitado: = False;
Intervalo: = 400; // encontrado empíricamente - es la demora utilizada en Windows Explorer
... y en OnTimer escribirá su motor de búsqueda. Asegúrese de que la primera línea aquí sea timIncSearch.Enabled: = False; Además, debido a que usa csOwnerDrawFixed, tal vez sea mejor aplicar un repintado de su control.
Como un lado, - simplemente adivinando porque no nos dio muchos detalles - quizás debe enganchar los eventos OnEnter y OnExit para abrir y cerrar la lista DropDown. (Normaly, esto se logra mediante el establecimiento de la propiedad AutoDropDown en consecuencia)
- En su ComboBox.KeyPress que voy a escribir
with timIncSearch do
begin
Enabled:=False;
Enabled:=True;
end;
... también tenga cuidado aquí, tal vez debe tener una construcción 'clave de caso' para manejar el número 13 por separado (o lo que sea).
Otros consejos:
- dependiendo de su situación, tal vez, deberá conectar (también?) La OnKeyDown (si desea procesar las teclas especiales como por ejemplo Retroceso, Del, flechas, etc. - teniendo. teniendo en cuenta que el evento se repite mientras la tecla está presionada) y/o OnKeyUp (si desea hacer un procesamiento similar al anterior pero sin teniendo en cuenta la función de repetición automática de tecla del teclado).
Primero debe decidir si necesita la funcionalidad "* my_string *" o "my_string *", es decir, si debe buscar dentro de las cadenas o solo desde el principio. Cuando se haya dado cuenta de eso, tendrá que agregar el índice de todas las palabras ingresadas en el cuadro combinado y buscarlo después de cada pulsación de tecla. No creo que manejar OnTimer sea un enfoque correcto. Prefiero usar "OnChange" o similar. Puede hacerlo con TStringList ordenado (dupignore), o quizás construir el índice usando tablas hash (la implementación depende de usted). La arquitectura depende del número máximo de cadenas que su combo podría contener. Si es un número significativo de lo que podría usar tablas hash (un hash Cardinal apuntando a múltiples índices: array, TList ...)
- 1. Cómo comprimir un archivo mientras escribe en él?
- 2. Resalte texto mientras escribe en textarea
- 3. EXC_BAD_ACCESS en UITextField mientras se escribe
- 4. Android lista de búsqueda mientras se escribe
- 5. Jquery: lista desplegable de filtro mientras escribe
- 6. Cómo filtrar la ocupación mientras escribe en MVC3
- 7. selector CSS descendiente vs descendiente
- 8. ¿Cómo ir alrededor de Runtime.getRuntime() mientras se escribe JUnit?
- 9. Java: cómo detectar la eliminación de archivos mientras se escribe en un archivo?
- 10. ¿Cómo mostrar la documentación completa de un método mientras escribe en VS?
- 11. Amazon Appstore DRM - ¿Cómo implementarlo?
- 12. java.io.NotSerializableException mientras se escribe objeto Serializable en el almacenamiento externo?
- 13. ¿Cómo cambiar dinámicamente el nombre del archivo mientras se escribe en un bucle?
- 14. El cursor de Eclipse salta al constructor mientras se escribe
- 15. cómo mostrar texto mientras se escribe en la caja de texto en jQuery
- 16. ¿Cómo se escribe un juego en 3D?
- 17. ¿Puede jQuery agregar comas mientras el usuario escribe números?
- 18. Simulando el host inalcanzable: cómo lograrlo/implementarlo
- 19. Alcance de variable de entorno basado en directorio: ¿cómo implementarlo?
- 20. ¿Por qué Intent.createChooser() necesita un BroadcastReceiver y cómo implementarlo?
- 21. ¿Cómo se escribe un ciclo while vacío en Coffeescript?
- 22. ¿Cómo puedo saber si un archivo es descendiente de un directorio determinado?
- 23. ¿Cuál es la diferencia descendiente directo (>) vs. descendiente en los selectores de jQuery?
- 24. tornado escribe un objeto Jsonp
- 25. selector de CSS, no es descendiente de
- 26. ¿Cómo se escribe bonito?
- 27. Bucle infinito con cin cuando se escribe cadena mientras se espera un número
- 28. Escribí un juego SDL usando C++ y quiero implementarlo
- 29. Uso del descendiente TOwnedCollection en Delphi
- 30. ¿Puedo hacer que TComboBoxEx tenga la misma altura que TComboBox?
Depende, ¿solo desea implementar la parte "buscar mientras escribe", sin mostrar cualquier retroalimentación al usuario (por ejemplo, la forma en que Firefox lo hace en las listas largas), o ¿desea mostrar un pequeño subcontrol que muestre la cadena de búsqueda actual? – dguaraglia