Diferença de Assign para := ?
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?
ex:
Img1.Assign(Img2)
ou
Img1 := Img2
Qual a diferença?
Raserafim
Curtidas 0
Respostas
Beppe
01/12/2003
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:
O método [b:79c4570d68]write[/b:79c4570d68] para uma propriedade TPersistent pode ser simples como:
O método Assign da classe cuida de duplicar os dados.
// 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.
GOSTEI 0
Raserafim
01/12/2003
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?
Porque está acontecendo isto?
GOSTEI 0
Raserafim
01/12/2003
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?
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?
GOSTEI 0