Lista desplegable dentro de un DBGrid

click fraud protection

Aquí le mostramos cómo colocar una lista de selección desplegable en un DBGrid. Cree interfaces de usuario visualmente más atractivas para editar campos de búsqueda dentro de un DBGrid, utilizando la propiedad PickList de una columna DBGrid.

Ahora que sabe qué son los campos de búsqueda y cuáles son las opciones para mostrar un campo de búsqueda en DelphiEn DBGrid, es hora de ver cómo usar la propiedad PickList de una columna DGBrid para permitir que un usuario elija un valor para un campo de búsqueda en un cuadro de lista desplegable.

Una información rápida sobre la propiedad de columnas DBGrid

UN DBGrid El control tiene una propiedad Columnas: una colección de objetos TColumn que representan todas las columnas en un control de cuadrícula. Las columnas se pueden establecer en tiempo de diseño a través del editor de columnas, o mediante programación en tiempo de ejecución. Por lo general, agregará Columnas a un DBGird cuando desea definir cómo aparece una columna, cómo se muestran los datos en la columna y acceder a las propiedades, eventos y métodos de TDBGridColumns en tiempo de ejecución. Una cuadrícula personalizada le permite configurar múltiples columnas para presentar diferentes vistas de la misma conjunto de datos (diferentes órdenes de columnas, diferentes opciones de campo y diferentes colores y fuentes de columna, para ejemplo).

instagram viewer

Ahora, cada columna en una cuadrícula está "vinculada" a un campo desde un conjunto de datos que se muestra en la cuadrícula. Además, cada columna tiene una propiedad PickList. La propiedad PickList enumera los valores que el usuario puede seleccionar para el valor del campo vinculado de la columna.

Llenar la lista de selección

Lo que aprenderá aquí es cómo llenar esa Lista de cadenas con valores de otro conjunto de datos en tiempo de ejecución.
Recuerde que estamos editando la tabla Artículos y que un campo Asunto solo puede aceptar valores de la tabla Temas: ¡la situación ideal para la Lista de selección!

Aquí se explica cómo configurar la propiedad PickList. Primero, agregamos una llamada al procedimiento SetupGridPickList en el controlador de eventos OnCreate del formulario.

procedimiento TForm1.FormCreate (Remitente: TObject);
empezar
SetupGridPickList ('Asunto', 'SELECCIONAR Nombre DE Sujetos');
final;

La forma más fácil de crear el procedimiento SetupGridPickList es ir a la parte privada de la declaración del formulario, agregue la declaración allí y presione la combinación de teclas CTRL + MAYÚS + C: la finalización del código de Delphi hará el descanso:

...
tipo
TForm1 = clase (TForm)
...
procedimiento privado SetupGridPickList (
const Nombre del campo: cuerda;
const sql: cuerda);
público
...

Nota: el procedimiento SetupGridPickList toma dos parámetros. El primer parámetro, FieldName, es el nombre del campo que queremos que actúe como un campo de búsqueda; el segundo parámetro, SQL, es la expresión SQL que usamos para llenar la lista de selección con posibles valores; en general, la expresión SQL debería devolver un conjunto de datos con un solo campo.

Así es como se ve la SetupGridPickList:

procedimiento TForm1.SetupGridPickList (const FieldName, sql: cuerda);
var
slPickList: TStringList;
Consulta: TADOQuery;
i: entero;
empezar
slPickList: = TStringList. Crear;
Consulta: = TADOQuery. Crear (auto);
tratar
Consulta. Conexión: = ADOConnection1;
Consulta. SQL.Text: = sql;
Consulta. Abierto;
// Rellene la lista de cadenasmientrasno Consulta. EOF dobegin
slPickList. Agregar (consulta. Campos [0] .AsString);
Consulta. Próximo;
final; //while
// coloca la lista en la columna correctapara i: = 0 a DBGrid1.Columns. Cuenta-1 hacer
Si DBGrid1.Columns [i] .FieldName = FieldName entonces comenzar
DBGrid1.Columns [i] .PickList: = slPickList;
Descanso;
final;
finalmente
slPickList. Gratis;
Consulta. Gratis;
final;
final; (* SetupGridPickList *)

Eso es. Ahora, cuando hace clic en la columna Asunto (para ingresar al modo de edición)

Nota 1: de forma predeterminada, la lista desplegable muestra 7 valores. Puede cambiar la longitud de esta lista configurando la propiedad DropDownRows.

Nota 2: nada le impide llenar la PickList de una lista de valores que no provienen de una tabla de base de datos. Si, por ejemplo, tiene un campo que solo acepta nombres de días laborables ('lunes',..., 'domingo'), puede crear una lista de selección "codificada".

"Uh, tengo que hacer clic en la Lista de selección 4 veces ..."

Tenga en cuenta que cuando desee editar el campo que muestra una lista desplegable, deberá hacer clic en la celda 4 veces para elegir realmente un valor de una lista. El siguiente fragmento de código, agregado al controlador de eventos OnCellClick de DBGrid, imita un golpe a la tecla F2 seguido de Alt + Flecha abajo.

procedimiento TForm1.DBGrid1CellClick (Columna: TColumn);
empezar// Hacer que la lista de selección desplegable parezca más rápidaSi Columna. PickList. Cuenta> 0 entonces comenzar
keybd_event (VK_F2,0,0,0);
keybd_event (VK_F2,0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_MENU, 0,0,0);
keybd_event (VK_DOWN, 0,0,0);
keybd_event (VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
keybd_event (VK_MENU, 0, KEYEVENTF_KEYUP, 0);
final;
final;
instagram story viewer