Hola mblascog.
El
TDBLookupComboBox no es muy complicado de usar, sólo tenés que asignar ciertas propiedades:
ListSource: Va el DataSource que apunta al DataSet cuyos datos querés que despliegue y muestre.
ListField: Va el campo que queres que se muestre al desplegar y por el cuál se hace la elección.
KeyField: Va el campo que devuelve del DataSet al que apunta el DataSource ingresado en
ListSource.
Hasta aquí tenemos un Combo que nos desplaza al escribir y si hacemos click sobre la flecha invertida se despliega mostrándonos el contenido.
Pero podemos hacer algo más. Supongamos que tenemos dos DataSet con sus respectivos DataSource, llamados por ejemplo:
tbPersonas,
dsPersonas y
tbCiudades,
dsCiudades.
tbPersonas tiene los siguientes campos:
ID_PERSONA
NOMBRE_PERSONA
REF_CIUDAD
Y
tbCiudades los siguientes:
ID_CIUDAD
NOMBRE_CIUDAD
Si estamos ingresando personas y queremos elegir la ciudad de la que es oriunda, desde una lista de ciudades ya ingresadas, haríamos en el DBLookupComboBox:
ListSource:
dsCiudades
ListField: NOMBRE_CIUDAD
KeyField: ID_CIUDAD
( Hasta acá nos mostrará los nombres de las ciudades con el comportamiento que buscas )
Y para que también nos ingrese ID_CIUDAD en el campo REF_CIUDAD de tbPersonas, llenamos en el DBLookupComboBox las siguientes propiedades:
DataSource:
dsPersonas (DataSet que recibe la elección)
DataField: REF_PERSONAS (Campo que recibe la elección)
Ahora, cada vez que hagamos una selección en el DBLookupComboBox, se modificará el campo REF_CIUDAD de
dsPersonas estableciendo la relación: REF_CIUDAD -> ID_CIUDAD.
Aunque no es el ejemplo, también se podría asignar el nombre de la ciudad si el campo emisor y receptor declarados en
KeyField y
DataField respectivamente, fueran de tipo
TStringField.
Como te darás cuenta si no asignas las propiedades
DataSource y
DataField, sólo mostrará lo ingresado en
ListField sin modificar nada.
Espero que la explicación te aclare un poco el panorama...
Saludos.
