PDA

Ver la Versión Completa : crear componente de bd dinamicamente


gushmaish
01-03-2007, 16:18:41
hola como les va?
estoy intentando agregar a mi clase TConnection un componente zconnection,

la cosa es q no estoy muy seguro de como hacerlo, aqui va la partecita donde se conecta..

unit UConection;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ZClasses, ZDbcIntfs, ZCompatibility,Grids,
ZConnection, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset,
//Dejar solo la base de datos q se utiliza
ZDbcMySql,ZDbcMysqlUtils, ExtCtrls
//ZDbcInterbase6,
//ZDbcPostgreSql,
//ZDbcDBLib
;

type
TConnection = class
private
//datos para la coneccion
Protocol:string;
HostName:string;
Port:integer;
DataBase:string;
UserName:string;
Password:string;

connection:TZConnection;
FDataset: TZQuery;

public
constructor Create(); overload;
constructor Create(Prot:string;Host:string;Prt:integer;DB:string;User:string;Pass:string);overload;
function connect():boolean;
end;

implementation

constructor TConnection.Create();//en este caso
begin
Protocol:='';
HostName:='';
Port:=0;
DataBase:='';
UserName:='';
Password:='';
end;

constructor TConnection.Create(Prot:string;Host:string;Prt:integer;DB:string;User:string;Pass:string);
begin
Protocol:=Prot;
HostName:=Host;
Port:=Prt;
DataBase:=DB;
UserName:=User;
Password:=Pass;
end;

function TConnection.connect():boolean;
var
Url: string;
begin
connection:=TZConnection.Create(Self);
connection.Protocol:=Protocol;
connection.HostName:=HostName;
connection.Port:=Port;
connection.Database:=DataBase;
connection.User:=UserName;
connection.Password:=Password;
try//intenta conectarse y si lo logra devuelve true, sino false
connection.Connected:=true;
except
connect:=false;
exit;
end;
connect:=true;
end;

end.


me dice q Son imcompatibles "TComponent y TConnection"

y si le saco la parte de

connection:=TZConnection.Create(Self);


tambien me da error

basicamente lo q necesito es crear un componente dinamicamente, ya q no solo necesito crear un zconnection sino tambien un zquery y demas componentes zeos..

desde ya muy agradecido

pijo
01-03-2007, 18:44:29
... pero yo probaria de cambiar la instrucción esa del create que usas.

connection:=TZConnection.Create(Self);

El create del TZConnection necesita como parámetro un objeto de la clase TComponent, pero el Self que le pasas es un TConnection que es la clase que creas tu que no desciende del tipo TComponent.
Por eso te dice que no són compatibles, una de dos, o haces que tu TConnection descienda del TComponent y entonces ya funcionará, o le pones al Create(xxx) donde xxx sea el nombre de un objeto del tipo TComponent.

ánimos

gushmaish
01-03-2007, 19:28:45
:D Muchas gracias amigo!!!

Eso anduvo bien, lo unico q hice fue heredar de TComponent


TConnection = class(TComponent)

hasta luego y gracias nuevamente