Hola,
No sé por qué consideras mejor el lanzar una consulta SQL para la validación. Hacer eso significa una carga extra para la aplicación. En lugar de un viaje al servidor para la inserción, debes hacer dos.
No obstante lo anterior, yo he hecho pre-validaciones con el fin de que el capturista no me vea con malos ojos cuando le lance el mensaje de error luego de media hora de captura
Pero en ese caso lo que hago es pedirle los datos de la llave a parte en Edits normales. Cuando da clic en OK, uso esos datos para lanzar la consulta de búsqueda y entonces es cuando inserto el nuevo registro con la llave capturada y presento DBEdits para el resto de los datos.
// Saludos