Componentes como ADOConnection y ADOQuery, normalmente las insertas en un formulario durante el diseño. El mecanismo de la VCL se encarga automáticamente de crear esos objetos.
Pero en tu caso, al ponerlo en su propia clase, ya no tienes a la VCL que se encargue de crearlos por lo que debes hacerlo tú mismo explícitamente.
Lo que debes hacer es implementar un constructor y un destructor para tu clase:
Código Delphi
[-]
type
TBiblioteca = class
public
constructor Create;
destructor Destroy; override;
end;
implementation
constructor TBiblioteca.Create;
begin
inherited;
cnx := TADOConnection.Create(nil);
query := TADOQuery.Create(nil);
end;
destructor TBiblioteca.Destroy;
begin
cnx.Free;
query.Free;
inherited;
end;
De esta manera, cuando construyas un objeto Biblioteca:
el método Create que se utilice será el que recién definiste, y es donde se crean las componentes que usas.
Como la VCL tampoco te va ayudar a destruir tus componentes, ya que no estás en un formulario, debes también destruirlas explícitamente en algún momento para liberar memoria. Lo más cómodo es hacerlo entonces, en el destructor de la propia clase, que se llamará cuando uses
// Saludos