![]() |
Como expandir PickList por software
Hola gente del foro
Vengo con una nueva consulta, tal vez sea una tontera pero todavía no se como hacerlo. Necesito que cuando Empiece a escribir en un campo del DBGrid se expanda la lista del picklist automáticamente. No tengo idea siquiera si se puede hacer. Lo que intento hacer es que cuando empiece a escribir en el campo me vaya filtrando nombres y solo queden los que contengan las letras que voy escribiendo, por ejemplo... Si tengo nombres Carolina Juan Martín Maria Pedro Roberto y escribo en el campo de nombre "ar" me aparezcan en la lista Martin, Maria, Carolina que son los nombres que contiene la cadena "ar" La idea es hacer una consulta de los nombres que contenga la cadena que voy escribiendo y cargarlos en el picklist, pero para que se vayan viendo se debe expandir la lista para que vayan apareciendo los nombres en la lista. Agradeceré sus comentarios Saludos MARX |
Filtra el dataset del grid. Podes usar el evento OnFilterRecord, la propiedad filter o lanzar consultas sql
Hay ejemplos de los 3 casos en el foro, aunque cualquier problema no dudes en preguntar |
Hola.
También creo que un filtrado desde el TDataSet o mediante una consulta SQL sería lo mas adecuado. Pero contestando al título de tu consulta, podes usar el evento OnKeyDown del DBGrid y la función API SendInput para desplegar el PickList, vg: Código PHP:
Saludos :) |
Buenisimo ecfisa.
Lo estoy probando Te hago una pregunta ¿Que librería es la que hay que definir para usar estas funciones?. |
Ya está, anduvo perfecto. :D
Ahora tengo que ver como lo implemento con el query. Gracias ecfisa. ^\||/ Saludos MARX |
Hago otra consulta, aprovechando sus conocimientos. ¿Hay alguna forma de escribir mas de un caracter en un campo del DBGrid cuando la lista del picklist está desplegada?
|
Hola MARX.
Si no te entiendo mal, si. Es el comportamiento por defecto de la propiedad PickList, se desplaza la selección en la lista desplegada a medida que se ingresan caracteres y con la tecla BackSpace se anula lo tecleado para el reingreso. Si deseas desplegar la lista ordenada, previamente tendrías que cargar los datos en un TStringList y usar su método Sort, por ejemplo: Código PHP:
|
A ver si me explico mejor. Cuando se despliega la lista de un picklist y escribo en el campo donde se desplegó la lista, no se pueden ver las letras que escribo, ingreso letras y lo unico que sucede es que se mueve la linea seleccionada a las palabras que empiezan con la letra que toqué, pero en el campo no se puede visualizar nada.
Lo que yo quiero es que cuando la lista está desplegada se pueda ir viendo lo que escribo como para ir ejecutando una consulta con el texto que se va escribiendo. En un combobox si se puede ver lo que escribo en el cuadro de texto de el mismo combobox mientras la lista está desplegada. Quiero saber si hay alguna forma que el picklist se comporte como el combobox en ese sentido. No se si me entienden. Creo que ni yo me entiendo lo que escribí... jajaja. |
Hola.
Ahora creo entenderte... No veo posible hacer lo que buscas mediante la propiedad PickList. Una consulta mas, ¿ De donde obtenes los datos que se cargan en PickList ? Saludos :) |
Hola ecfisa.
Los datos los voy a sacar de una consulta que se va ir actualizando a medida que se ingresen los caracteres. Pienzo hacer una consulta en SQL con la propiedad like No quiero utilizar un DBComboBox arriba del DBGrid porque me ha traido problema con los diferentes comportamientos que necesito en los campos del DBGrid. cualquier otro dato que necesites hacemelo saber. Saludos MARX |
Una idea seria escribir en un TEDIT o similar y conforme vayas escribiendo vas mandando lo escrito al componente ese que deseas usando el evento OnKeyUp por ejemplo. Con eso verías el texto sin problemas.
|
Hola Aguml.
Si, mi idea era hacerlo con un DBLookup que apuntara a una consulta, pero me traía problemas con algunos comportamientos del DBGrid. Tenía que agregar mucha programacion para que no se notara que es un DBLookup Igual, es buena idea. Gracias por tu aporte. Saludos MARX |
La franja horaria es GMT +2. Ahora son las 04:20:57. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi