Hola y bienvenido al club.
Se me ocurren dos cosas para lo que quieres hacer.
Para fijar ideas vamos a suponer que tu grid está conectado a una componente tblPedidos y que tienes otra componente tblProductos conectada a la tabla de productos.
Primera opción - Agregar un campo calculado
a. Abres el editor de campos de tblPedidos (menú contextual de la componente)
b. Agregas un nuevo campo (menú contextual del editor de campos)
c. Pones las propiedades del nuevo campo como sigue:
Name - nombre del campo
Puedes poner cualqiera que desees, por ejemplo, producto
Componente - No pongas nada, se llena solo.
Type - String
Size - la longitud máxima del nombre del producto
Field type - Lookup
DataSet - tblProductos
Result field - campo en tabla productos que tenga el nombre del producto (o cualquiera de sus campos que te permita identificarlo visualmente)
Key fields, Lookup keys - en estos pones los campos de cada tabla que establecen la relación. En tu caso sería clave.
Al hacer esto, en el grid aparecerá el campo productoque será un combobox del cual se puede escoger directamente el producto deseado. Si además dejas la columna correspondiente a la clave del producto entonces el usuario puede o bien escribirla directamente o bien abrir el combo y seleccionar uno.
Segunda opción - Diseñar una ventana especializada
a. Abres el editor de columnas del grid (menú contextual de la componente)
b. Agregas todos los campos (menú contextual del editor de columnas)
c. Seleccionas la columna clave y en su propiedad ButtonStyle escoges cbsEllipsis. Esto hará que al entrar a editar una celda de dicha columna, aparezca el típico botoncito de tres puntos (como el que aparece en algunas propiedades del inspector de objetos)
En el evento OnEditButtonClick del DBGrid programas lo que haya que hacer. Ese evento se genera cada vez que se oprime el botón de tres puntitos. Entonces puedes aquí crea y/o abrir el formulario con la lsta de productos y según el que se escoja, asignarlo al registro actual.
La segunda opción va más acorde a lo que describes pero en la mayoría de los casos te será más que suficiente la primera opción, además de ser mucho más sencilla.
// Saludos
|