Só remendando um erro meu:

Infelizmente o Flex não possue a interface ICloneable, então a função clone
é específica da sua classe.

Confundi com .net onde tenho a interface ICloneable =)

A única desvantagem disso é que você não conseguiria automatizar a clonagem
de objetos em uma função genérica (mas também nada impede do seu aplicativo
definir a interface ICloneable... é apenas um facilitador e nem importa
muito para o teu caso).

2010/1/22 Lorenzi <[email protected]>

> Valeu Julio obrigado pela resposta vou testar isso..
>
> On 22 jan, 19:09, Júlio César Ködel <[email protected]> wrote:
> > Uma coisa que vocês tem que ter noção é que o grid, ou qualquer outro
> > componente de lista do Flex NÃO POSSUEM ITENS NEM LINHAS!
> >
> > Ele simplesmente apresenta os dados providos na propriedade dataProvider.
> >
> > Portanto, o que você quer fazer é simplesmente copiar um elemento do
> array
> > para outra posição.
> >
> > Mas aí temos as pegadinhas. Rá! =)
> >
> > Arrays, por padrão, são imutáveis, ou seja, não é nada bom adicionar
> itens
> > neles (já que eles alocam um espaço em memória com apenas um ponteiro e
> > adicionar um item nestes caras implica, implicita ou explicitamente, em
> > copiar todo o array antigo para uma nova localização na memória + o item
> a
> > ser inserido).
> >
> > Por isso a grande maioria das operações feitas em listas no Flex são
> através
> > do ArrayCollection, que são listas de dados onde novos dados podem ser
> > adicionados mais facilmente (e há mecanismos internos para prover
> > performance a esta operação).
> >
> > O grande problema é que cada item do ArrayCollection é um objeto. E o que
> é
> > um objeto? Apenas um inteiro apontando para uma estrutura da memória.
> Então
> > copiar o objeto para outra posição do array na verdade não o copia,
> apenas
> > copia sua referência (o que implica que uma alteração no item original
> seja
> > imediatamente replicada para os itens copiados já que eles são a mesma
> > coisa, a mesma estrutura em memória).
> >
> > Para isso o ActionScript define uma interface para adicionar o método
> Clone
> > em um objeto. Cabe a você, programador, implementar o mecanismo de clone
> na
> > sua classe que implica, basicamente, em criar uma nova instância do tipo
> > desejado e copiar cada uma das propriedades para esta nova instância,
> > gerando assim uma cópia real do objeto.
> >
> > Então, vamos supor sua classe:
> >
> > public class MinhaClasse
> > {
> >   public var nome:String;
> >   public var idade:int;
> >
> > }
> >
> > Ficaria assim:
> >
> > public class MinhaClasse
> > {
> >   public var nome:String;
> >   public var idade:int;
> >
> >   public function clone():MinhaClasse
> >   {
> >     var copia:MinhaClasse = new MinhaClasse();
> >
> >     copia.nome = this.nome;
> >     copia.idade = this.idade;
> >     return copia;
> >   }
> >
> > }
> >
> > Aí no teu grid, você poderia fazer:
> >
> > (grid.dataProvider as ArrayCollection).addItem(itemADuplicar.clone());
> >
> > E, pronto, você tem um item duplicado na sua estrutura de dados.
> >
> > Note, obviamente, que se sua classe tiver um atributo/propriedade que
> seja
> > não primitivo, você deverá clonar este elemento também, ou seja, supondo
> que
> > NOME seja uma classe sua composta pelos campos nome e sobrenome. Não
> > adiantaria fazer copia.nome = this.nome porque, novamente, você estaria
> > apenas duplicando o ponteiro. Neste caso o mesmo esquema deveria ser
> > adotado: copia.nome = this.nome.clone();
> >
> > 2010/1/22 Lorenzi <[email protected]>
> >
> >
> >
> >
> >
> > > Boa tarde.
> >
> > > Seguinte minha duvida é essa tenho um  datagrid com tres colunas nome,
> > > idade, duplicar(este sera um botao para o cara clicar) . Minha duvida
> > > é como eu faço para clicar no duplicar e ele criar uma nova linha no
> > > grid, copiando a linha clicada.
> >
> > > /*normal*/
> > > Nome            idade      Duplicar
> > > Marcelo           23            +
> >
> > > /*duplicado*/
> > > Nome            idade      Duplicar
> > > Marcelo           23            +
> > > Marcelo           23            +
> >
> > > /*duplicado*/
> > > Nome            idade      Duplicar
> > > Marcelo           23            +
> > > Marcelo           23            +
> > > Marcelo           23            +
> >
> > > desta maneira.
> >
> > > Grato.
> >
> > > --
> > > Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> > > Para enviar uma mensagem, envie um e-mail para
> [email protected]
> > > Para sair da lista, envie um email em branco para
> > > [email protected]
> > > Mais opções estão disponíveis emhttp://groups.google.com/group/flexdev
> >
> > --
> > []
> > Júlio César Ködel G.
>
> --
> Você recebeu esta mensagem porque está inscrito na lista "flexdev"
> Para enviar uma mensagem, envie um e-mail para [email protected]
> Para sair da lista, envie um email em branco para
> [email protected]
> Mais opções estão disponíveis em http://groups.google.com/group/flexdev
>



-- 
[]
Júlio César Ködel G.

-- 
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para 
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a