Dentro de un DBGrid (o más específicamente, una casilla de un DBGrid) puedes presentar una lista desplegable sin mayores problemas. Para ello basta agregar un campo de tipo Lookup a la lista de campos del DataSet (el Query en tu caso).
Aunque desconozco la estructura de tus tablas, como es lógico, tendrás un tabla con el catálogo de familias, digamos
familia = (id, familia)
donde la llave primaria id corresponde con la llave foránea que tengas en la otra tabla, digamos familia_id, y familia es el nombre de la familia.
Asigna un componente Table que apunte a ese catálago de familias, digamos tblFamilia.
En el editor de campos del Query (menú contextual del componente) agrega todos los campos que quieras mostrar en el DBGrid, y luego agrega uno nuevo (opción New Field). En el cuadro de diálogo escribes el nombre que desees para el campo, por ejemplo, familia, lo declaras de tipo string y le asignas la longitud adecuada para abarcar el nombre de las familias.
En Field Type escoges, como es natural, el tipo Lookup.
La parte importante viene en la sección Lookup Definition. Ahí, apuntas Dataset al componente tblFamilia, ResultField al campo familia de la tabla familia, KeyField a la llave foránea en la tabla principal (familia_id) y Lookup Keys a la llave primaria de la tabla familia.
Una vez hecho esto, tu DBGrid mostrará el nuevo campo (el nombre de la familia) y cuando el usuario quiera editarlo, le aparecerá una lista desplegable con todas las familias.
Bye
|