hola,
En cuanto a las DLLs como te ha comentado Casimiro, estando en las carpetas de windows debería de cogerlas sin problemas, otra opción es dejar dichas DLLs en la misma carpeta que el ejecutable y en ninguno de estos casos usar la opción LibraryLocation del componente, salvo que quieras usar otra localización distinta de estas dos (las opciones por defecto).
Para el tema de la configuración por parte del usuario es muy recomendable que marques la opción DesingConnection a true, esta opción te permite mantener la conexión activa en tiempo de diseño pero no conecta automáticamente al crear el componente, esto es necesario si la configuración de diseño va a ser distinta que la configuración en ejecución.
Y aquí te dejo un ejemplo de como puedes hacer para que el usuario pueda configurar la conexión y guardar y recuperar dicha configuración:
Código Delphi
[-]uses dialogs, Forms, Vcl.Controls, inifiles, unit2;
{$R *.dfm}
function TDMConnection.ConfigurarDBConnection: Boolean;
var
FormConfig:TFormDBConfig;
begin
FormConfig:=TFormDBConfig.create(application);
try
FormConfig.showModal;
Result:=(FormConfig.modalResult=mrOk);
finally
FormConfig.free
end;
if result then
SaveDBConfig;
end;
procedure TDMConnection.DataModuleDestroy(Sender: TObject);
begin
ZConnection1.Disconnect;
end;
function TDMConnection.DBConectar: Boolean;
var
intento:LongInt;
begin
intento:=0;
if loadDBConfig then
repeat
try
ZConnection1.Connect;
except
On E:Exception do
MessageDlg(E.message, mtError, [mbOK], 0);
end;
inc(intento);
until ZConnection1.Connected or (intento>=3) or not ConfigurarDBConnection;
end;
function TDMConnection.loadDBConfig: Boolean;
var
ConfigFile:TIniFile;
ASection:String;
begin
Result:=False;
ConfigFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
try
with ZConnection1 do begin
ASection:=ZConnection1.Name;
Database := ConfigFile.ReadString(ASection, 'database', database);
Catalog := DataBase;
HostName := ConfigFile.ReadString(ASection, 'HostName', HostName);
Port := ConfigFile.ReadInteger(ASection, 'Port', Port);
protocol := ConfigFile.ReadString(ASection, 'protocol', protocol);
LibraryLocation:= ConfigFile.ReadString(ASection, 'LibraryLocation', LibraryLocation);
User := ConfigFile.ReadString(ASection, 'User', User);
password := ConfigFile.ReadString(ASection, 'password', password);
Result:=true;
end;
finally
ConfigFile.Free;
end;
end;
function TDMConnection.SaveDBConfig: Boolean;
var
ConfigFile:TIniFile;
ASection:String;
begin
Result:=False;
ConfigFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
try
with ZConnection1 do begin
ASection:=ZConnection1.Name;
ConfigFile.WriteString(ASection, 'database', database);
ConfigFile.WriteString(ASection, 'HostName', HostName);
ConfigFile.WriteInteger(ASection, 'Port', Port);
ConfigFile.WriteString(ASection, 'protocol', protocol);
ConfigFile.WriteString(ASection, 'LibraryLocation', LibraryLocation);
ConfigFile.WriteString(ASection, 'User', User);
ConfigFile.WriteString(ASection, 'password', password);
Result:=true;
end;
finally
ConfigFile.Free;
end;
end;
Y para usarlo solo es necesario poner
Código Delphi
[-] if not DMConnection.DBConectar then begin
MessageDlg('No ha sido posible conectarse a la BBDD', mtError, [mbOK], 0);
exit;
end;
MessageDlg('Conexion OK', mtInformation, [mbOK], 0);
Importante en ZEOS guardar también los campos protocol y port (protocolo y puerto) son los que indican el sistema de base de datos que se va utilizar, y que DLLs va a necesitar para conectar, (ZEOS permite conectar a múltiples motores de bases de datos)
Un saludo