No es como yo lo haría, pero así como dentro de TConexion.Consultar creas un TDataSource, me parece que podrías crear también el "TpFIBDataset" que asignas a dicho TDataSource.
Pero debes asegurarte de destruir ambos objetos cuando ya no se necesiten (por ejemplo, al destruir o cerrar el formulario donde están los TcxLookupComboBox).
Por otro lado, te aconsejo revisar la manera en que manejas las excepciones dentro de TConexion.Consultar. Como lo has puesto no ayuda en nada. Cuando modifiques ese método usa un
Try-Except para liberar cualquier objeto que haya creado la rutina, ya que ésta terminará de manera anormal.
"Re-elevar" la excepción ("
Raise;") está bien cuando antes de esa instrucción haces los "Free" que se ameritan (si no hay nada que "cerrar", liberar o validar, una reelevación no tiene sentido). Y cualquier instrucción detrás de
Raise (como ese "Exit") siempre es innecesaria.
Entiendo que eres novel, como humildemente te declaras, pero con mayor razón resulta imperativo que te animes a estudiar concienzudamente algo más sobre el manejo de
memoria, la
POO y los bloques
Try de Delphi. No dudes en abrir nuevos hilos en Club Delphi para exponer las dudas que te vayan surgiendo. Trataremos de ayudarte en base a nuestra capacidad de tiempo y conocimiento.
Y siempre atrévete a leer la ayuda (aunque a veces sea "escasa" o esté en inglés). Quizá tardes una hora en entender un párrafo de 10 líneas (como me sucedió a mí muchas veces), pero la impronta que eso dejará en ti no tendrá precio.
Saludos.
Al González.
