Página 1 de 1

Objeto instanciando Objeto

Publicado: Jue Nov 03, 2011 5:24 pm
por Marcelo Coelho Silva
Prezados Senhores,
Tenho uma Classe TECF que gostaria de ser a classe "Mestre" de um grupo
de Classes Filhas ECF_xxxx (ECF_MP20FI2, ECF_MP2100TH, etc) já
personalizadas da Classe PAI ECF_PADRAO.
Estou tentando utilizar a Classe TECF para instanciar as Classes ECF_xxxx.
Porem da erro na execução dizendo "Invalid self" na linha do "Return
oObjeto" do Method new() da Classe TECF.
O que estou fazendo de errado ???
Obrigado,
Atenciosamente,
Marcelo Coelho Silva
Brasil.
PS: ABAIXO SEGUE AS ROTINAS (PRG) UTILIZADAS.
ROTINA DE CHAMADA:
/*
* Projeto: MH_ECF
* Arquivo: Teste_ecf.prg
* Descrição:
* Autor:
* Data: 10-29-2011
*/
#include "Xailer.ch"
CLASS TForm1 FROM TForm
COMPONENT oLabel1
COMPONENT oButton1
METHOD CreateForm()
METHOD FormInitialize( oSender )
ENDCLASS
#include "Teste_ecf.xfm"
METHOD FormInitialize( oSender ) CLASS TForm1
Local oECF
oECF := TECF():New("MP20FI2")
::oLabel1:cText := oECF:Coo
RETURN Nil
//---------------------------------------------------------- --------------------
CLASSE TECF :
/*
* Projeto: MH_ECF
* Arquivo: TECF.prg
* Descrição: Classe Principal do Projeto MH_ECF
* Autor: Marcelo Coelho Silva
* Data: 11-03-2011
*/
#include "Xailer.ch"
CLASS TECF
Method new(cModelo,cCOM,nVelocidade) CONSTRUCTOR
ENDCLASS
Method new( cModelo, cCom, nVelocidade ) Class TECF
Local cComPort
Static oObjeto
If cCom # Nil
cComPort := ".COM"+cCom
else
cComPort := ".COM1"
EndIf
Do Case
Case cModelo = "MP20FI2"
oObjeto := ECF_MP20FI2():new(cComPort,nVelocidade)
Case cModelo = "MP2100TH"
oObjeto := ECF_MP2100TH():new(cComPort,nVelocidade)
OtherWise
oObjeto := Nil
EndCase
Return oObjeto
//---------------------------------------------------------- --------------------------------------

Objeto instanciando Objeto

Publicado: Jue Nov 03, 2011 7:28 pm
por jlalin
Marcelo,
si declaras New() o Create() como contructores debes devolver Self (que es
el objeto en sí­ mismo). Quita la cláusula CONSTRUCTOR de New() o utiliza un
metodo con otro nombre para devolver oObjeto.
Saludos,
José Lalí­n

Objeto instanciando Objeto

Publicado: Mar Nov 08, 2011 3:34 pm
por Marcelo Coelho Silva
Obrigado.
Em 03/11/2011 16:28, José Lalí­n escreveu:
> Marcelo,
>
> si declaras New() o Create() como contructores debes devolver Self (que
> es el objeto en sí­ mismo). Quita la cláusula CONSTRUCTOR de New() o
> utiliza un metodo con otro nombre para devolver oObjeto.
>
> Saludos,
> José Lalí­n
>