Fórum Acessar Propriedades de classe diferentes (Orientação a obj) #277878
19/04/2005
0
Posso utilizar uma única classe como referência para fazer a atribuição?
Ex. Utilizando a mesma classe (Apenas TClasse1) e mudando a referência
TClasse1(fParent1).ValorDolar:= 1;
TClasse1(fParent2).ValorDolar:= 5;
OU ENTÃO sou OBRIGADO a seguir desta forma abaixo?:
if fParent1.ClassType = TClasse1 then
TClasse1(fParent1).ValorDolar:= 1
else
TClasse2(fParent2).ValorDolar:= 5;
Obrigado
Mcd
Curtir tópico
+ 0Posts
19/04/2005
Nildo
TClasse1 = class( tcomponent ) public Teste: string; QualquerCoisa: Integer; ValorDolar: Integer; end; TClasse2 = class( tcomponent ) public VarQualquer: string; Outra: Integer; ValorDolar: Integer; end;
Desta maneira funciona pois o compilador do Delphi ja prepara o código para quando você usar [b:fa6cf6e975]TClasse( Variavel_Classe2 ).ValorDolar[/b:fa6cf6e975], ele sabe que tem que atribuir o valor na posição absoluta do ValorDolar dentro da classe.
Agora, se a posição do ValorDolar não estiver no mesmo local nas duas classes, você não pode usar o método que você citou. Exemplo:
TClasse1 = class( tcomponent ) public QualquerCoisa: Integer; ValorDolar: Integer; end; TClasse2 = class( tcomponent ) public VarQualquer: string; // <-- repare que tem essa variavel a mais Outra: Integer; ValorDolar: Integer; end;
Quando você utilizar [b:fa6cf6e975]TClasse( Variavel_Classe2 ).ValorDolar[/b:fa6cf6e975], você vai estar atribuindo na variavel [b:fa6cf6e975]Outra[/b:fa6cf6e975] da Variavel_Classe2, pois o [b:fa6cf6e975]ValorDolar[/b:fa6cf6e975] da TClasse1 é a segunda variavel (em posição absoluta seria +/- o quarto byte), que na TClasse2, essa posição é a variavel [b:fa6cf6e975]Outra[/b:fa6cf6e975]
Entendeu?
Gostei + 0
19/04/2005
Massuda
TClasseBase = class(TComponent) public ValorDolar: Integer; end; TClasse1 = class(TClasseBase) public Teste: string; QualquerCoisa: Integer; end; TClasse2 = class(TClasseBase) public VarQualquer: string; Outra: Integer; end;
TClasseBase(Objeto).ValorDolar := ...;
Gostei + 0
19/04/2005
Nildo
TClasseBase(Objeto).ValorDolar := ...;
Perfeito!
Só complementando: Desta maneira, a posição absoluta de ValorDolar será sempre o mesmo para todas as classes que descendem dela. Por isso vai funcionar
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)