GARANTIR DESCONTO

Fórum Diferença de Assign para := ? #198098

01/12/2003

0

Qual a diferença entre utilizar o Assign e o := para atribuir a um campo do tipo picture um outro campo do tipo picture.

ex:

Img1.Assign(Img2)

ou

Img1 := Img2

Qual a diferença?


Raserafim

Raserafim

Responder

Posts

01/12/2003

Beppe

Geralmente, no caso destes objetos(herdados de TPersistent), o operador := faz com que um objeto passe a ser o mesmo que o outro. Já Assign copia o objeto. Entretanto, há casos em que ambos métodos tenham semântica de copia. Mas o Delphi não faz isso automaticamente, você precisa intervir na atribuição à uma propriedade, através do especificador [b:79c4570d68]write[/b:79c4570d68]. Ex:

// ambas alternativas resultam no mesmo
Image1.Picture.Graphic := Image2.Picture.Graphic;
Image1.Picture.Graphic.Assign(Image2.Picture);


O método [b:79c4570d68]write[/b:79c4570d68] para uma propriedade TPersistent pode ser simples como:

Propriedade.Assign(Value);


O método Assign da classe cuida de duplicar os dados.


Responder

Gostei + 0

05/12/2003

Raserafim

Estou criando um componente, e que tem Canvas. Em determinados momentos no código preciso pintar no canvas o bitmap que está na propriedadae Picture. Quando atribuo com := dá certo, mas quando atribuo com Assign não dá certo.

Porque está acontecendo isto?


Responder

Gostei + 0

05/12/2003

Raserafim

Estou fazendo um componente(e para simplificar) teria 2 propriedades TPicture. Dentro do código tenho uma variável também do tipo TPicture (que será utilizado no Paint para desenhar a figura no canvas). Esta variável serve para mim atribuir uma das figuras das propriedades TPicture.
O problema é que: se no create do componente eu atribuir a propriedade a esta variável usando o Assign a figura não aparece quando executo a aplicação, apenas quando passo o mouse em cima do botão (que tem um evento para substituir a imagem).
Quando uso o := ao invés do Assign, o a imagem é exibida logo que executo a aplicação, mas o problema é que a imagem não consegue ser trocada quando passo o mouse em cima.

Esta é apenas uma grande simplificação do componente, na verdade tem mais propriedades TPicture, e só vim a consegui fazer o componente funcionar completamente quando usei o Assign, o único problema é para exibir a imagem logo que executo a aplicação.

Alguma sugestão para utilizar o Assign e fazer a imagem aparecer na execução?


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar