Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

EmmanuelRamos

ZEOS - Problemas na Herança de TZConnection

Recommended Posts

Tenho um Form e uma classe conexao que herda de TZConnection.

 

Classe Conexao

type TConexao= class(TZConnection)
  public
	 procedure conectar;
	 procedure desconectar;
end;

implementation

{ TConexao }

procedure TConexao.conectar;
begin 
   self.Protocol:='postgresql-7.4';
   self.Port:=5432;
   self.HostName:='localhost';
   self.Database:='fazenda';
   self.User:='postgres';
   self.Password:='admin';
   self.LoginPrompt:=false;
   self.ReadOnly:=false;
   self.AutoCommit:=true;
   self.Connect;
end;

Dentro do Form, mais precisamente no método OnCreate tem o código

type
  Tfrmprincipal = class(TForm)	
	  procedure FormCreate(Sender: TObject);  
  end;

var
  frmprincipal: Tfrmprincipal;
  conexao:TConexao;

implementation

{$R *.dfm}
procedure Tfrmprincipal.FormCreate(Sender: TObject);
begin
   conexao:=TConexao.Create(self);
   conexao.conectar;
end;

Como visto estou chamando o construtor da classe conexao, ou da classe pai, é ai que estou tendo um erro:

[Error] UInterface.pas(34): Incompatible types: 'TZConnection' and 'Tfrmprincipal'

Por favor, como instanciar este objeto conexao (herdando deTZConnection) jáque o construtor da classe mãe tem essa assinatura constructor(AOwner:TComponent), a partir do Form?

 

Obrigado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

Dei uma testada aqui, bem rápido:

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ZConnection, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset,
  ZAbstractTable;

type
  TForm1 = class(TForm)
	Tconexao: TZConnection;
	procedure FormCreate(Sender: TObject);
  private
	{ Private declarations }
  public
	{ Public declarations }
  procedure conectar;
  end;

var
  Form1: TForm1;
  Conexao: TZConnection;

implementation

{$R *.dfm}

procedure Tform1.conectar;
begin
   Tconexao.Protocol:='postgresql-7.4';
   Tconexao.Port:=5432;
   Tconexao.HostName:='localhost';
   Tconexao.Database:='fazenda';
   Tconexao.User:='postgres';
   Tconexao.Password:='admin';
   Tconexao.LoginPrompt:=false;
   Tconexao.ReadOnly:=false;
   Tconexao.AutoCommit:=true;
   Tconexao.Connect;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
conexao := TConexao.Create(nil);
conectar;
end;

end.

ocorreu tudo certo.

Talvez lhe ajude em alguma coisa,

abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

Dei uma testada aqui, bem rápido:

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ZConnection, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset,
  ZAbstractTable;

type
  TForm1 = class(TForm)
	Tconexao: TZConnection;
	procedure FormCreate(Sender: TObject);
  private
	{ Private declarations }
  public
	{ Public declarations }
  procedure conectar;
  end;

var
  Form1: TForm1;
  Conexao: TZConnection;

implementation

{$R *.dfm}

procedure Tform1.conectar;
begin
   Tconexao.Protocol:='postgresql-7.4';
   Tconexao.Port:=5432;
   Tconexao.HostName:='localhost';
   Tconexao.Database:='fazenda';
   Tconexao.User:='postgres';
   Tconexao.Password:='admin';
   Tconexao.LoginPrompt:=false;
   Tconexao.ReadOnly:=false;
   Tconexao.AutoCommit:=true;
   Tconexao.Connect;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
conexao := TConexao.Create(nil);
conectar;
end;

end.

ocorreu tudo certo.

Talvez lhe ajude em alguma coisa,

abraço!

Obrigado por ter respondido ZueRa...mããããs...Eu quero instanciar a conexão a partir da classe Form, pelo método OnCreate, porém minha classe TConexao (especializada pela classe TZConnection ) esta em outra Unit, então o método conectar está em outra Unit também. E o construtor da classe mãe da Conexao recebe como parâmetro um AOwner:TComponent.

 

Me ajude a sair dessa!!! Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado por ter respondido ZueRa...mããããs...Eu quero instanciar a conexão a partir da classe Form, pelo método OnCreate, porém minha classe TConexao (especializada pela classe TZConnection ) esta em outra Unit, então o método conectar está em outra Unit também. E o construtor da classe mãe da Conexao recebe como parâmetro um AOwner:TComponent.

 

Me ajude a sair dessa!!! Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.