.

Demian,

Realmente eu errei no meu primeiro exemplo, mas no segundo...

1o. fiz: (TEdit)@obj  ...pq no próprio código da unit de TObjectList,
Contnrs, o retorno é feito assim. A TObjectList é herança de TList
q é lista de ponteiros, a TObjectList retorna os objetos da seguinte
forma: (TObject)pointer

2o. mesmo assim, não é possível fazer o q vc sugeriu por causa
da hierarquia das classes..

TEdit --> TObjec  ...isso é possível!
TObject --> TEdit ...isso NÃO!



--- Em delphi-br@yahoogrupos.com.br, Demian Lessa <[EMAIL PROTECTED]> escreveu
> Filipe,
> 
> TObjectList guarda uma lista de objetos quaisquer mas permite o acesso 
> apenas como TObject. Assim, para recuperar o objeto com a referência 
> correta da classe à qual ele pertence (que você sabe qual é) será
sempre 
> preciso fazer um typecast. Somente quando você manipular os elementos 
> como TObject é que você não precisará fazer isso.
> 
> for i := 0 to MyObjectList.Count - 1 do
>    if MyObjectList.Objects[i] is TEdit then
>    begin
>      edit1 := TEdit(MyObjectList.Objects[i]);
>      Break;
>    end;
> 
> Pelo seu primeiro exemplo abaixo, acho que seu problema foi apenas 
> sintaxe. Acredito que o cast resolve para a referência da lista de 
> objetos e não ao item 0 da lista. Assim, bastaria fazer:
> 
> TEdit(objectLista1[0]);
> 
> No seu segundo exemplo, você atribui o cast ao endereço do objeto e não 
> ao objeto propriamente dito. Em Object Pascal, as referências entre 
> ponteiro e objeto são automaticamente resolvidas para você. Dessa
forma, 
> bastaria fazer:
> 
> obj1 := objectLista[0];  edit1 := (TEdit)obj1;
> 
> Atenciosamente,
> 
> Demian Lessa
> Salvador - Brasil
> 
> Filipe Belchior wrote:
> > Olá! paz!
> > 
> > Estou usando pela 1a. vez a classe TObjectList, pelo nome da classe é 
> > possível
> > imaginar para q serve!
> > Esta classe é semelhante a TStringList... minha difuldade está em 
> > resgatar os
> > objetos da lista, pois como se sabe, ou deveria se saber, não é
possível 
> > "converter"
> > (perdão, esqueci o termo propício) uma classe por uma de "hierarquia 
> > abaixo".
> > Como obviamente todos os objetos da lista estão como TObject, não
é possível
> > o seguinte:
> > 
> >     ex.: (TEdit)objectLista1[0];
> > 
> > ...tentei também o seguinte:
> > 
> >     ex.: obj1 := objectLista[0];  edit1 := (TEdit)@obj1;
> > 
> > ...também não. Até compila, mas na linha da atribuição ao "edit1", 
> > ocorre "access violation"
> > 
> > Agradeço a ajuda...
> > 
> > 
> > Filipe Belchior
> > ICQ 283735340
> > MSNM [EMAIL PROTECTED]





-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a