Hola, he visto (muy por encima) el código que adjuntas y te pongo una sugerencia.
Para no alargar me enfoco sólo en una parte que aquí resumo:
Código Delphi
[-]
type
{$if defined (ZEOS)}
TMiQuery = TZQuery;
...
{$elseif defined(BDE)}
...
{$endif}
...
procedure ParamAsDate(Qry: TMiQuery; Nombre: String; Valor: TDateTime);
begin
{$if defiined(ZEOS)}
Qry.ParamByName(Nombre).AsDate := Valor;
{$elseif defined(BDE)}
..
{$endif}
end;
Es decir, la manera en que enfocas el problema es discerniendo el tipo de componente a usar mediante directivas de compilación y programando procedimientos generales que harán uso de los tipos realmente compilados.
Otra forma de enfocar esto es "convirtiendo" estos procedimientos generales en métodos de una clase genérica:
Código Delphi
[-]
type
TQueryGenerico = class
public
procedure ParamAsDate(Nombre: String; Valor: TDateTime); virtual; abstract;
end;
Para cada motor que desees manejar derivas una clase:
Código Delphi
[-]
type
TQueryZeos = class(TQueryGenerico)
private
FQuery: TZQuery;
public
constructor Create; destructor Destroy; override;
procedure ParamAsDate(Nombre: String; Valor: TDateTime); override;
end;
La clase base no implementa los métodos, sólo los define (virtual y abstract) de manera que tu aplicación pueda hacer uso de ellos indistintamente de cuál descendiente es el que realmente se crea.
Al comienzo de tu aplicación, suponiendo que decides usar Zeos, construyes un objeto TQueryZeos:
Código Delphi
[-]
QueryGenerica := TQueryZeos.Create;
donde QueryGenerica es de tipo TQueryGenerica. El resto de tu aplicación no dependerá de si usaste TQueryZeos o TQueryBde ya que únicamente hace uso de los métodos declarados en TQueryGenerica. El polimorfismo hace que se llamen los métodos de la clase adecuada.
Esto te permite no depender de directivas de compilación. Cuando desees agregar soporte para un nuevo motor simplemente creas el correspondiente descendiente sin tocar el resto del código ni tener que recompilar la aplicación principal excepto por la parte que toca a la construcción del descendiente específico de TQueryGenerico.
Esto último se puede facilitar mediante el uso de una fábrica de la cual puedo hablar al rato porque ya me tengo que ir.
// Saludos