Transformar TImage em uma espécie de Panel
Boa noite!
Eu gostaria de colocar uma imagem como background no meu form, mas de forma onde conseguisse alinhar os objetos dentro do TImage. Ex.:
1 - Tenho um TImage alclient no meu form;
2 - Coloco um label, e alinho altop.
Gostaria que o label ficasse altop, mas dentro da imagem... O label foi só um exemplo... gostaria que a imagem ficasse por trás de qualquer objeto que eu alinhasse, ficando como um "panel". Como eu poderia fazer isso??
Eu gostaria de colocar uma imagem como background no meu form, mas de forma onde conseguisse alinhar os objetos dentro do TImage. Ex.:
1 - Tenho um TImage alclient no meu form;
2 - Coloco um label, e alinho altop.
Gostaria que o label ficasse altop, mas dentro da imagem... O label foi só um exemplo... gostaria que a imagem ficasse por trás de qualquer objeto que eu alinhasse, ficando como um "panel". Como eu poderia fazer isso??
Robert
Curtidas 0
Melhor post
Joel Rodrigues
06/02/2015
Outra opção seria deixar o TImage com Align = alNone e fixá-lo em Left=0, Top=0 e Height e Width iguais às do form. Em seguida, alterar a propriedade Anchors para fixar todas as posições (akLeft, akTop, akRight e akBottom). Assim o TImage teria sempre o mesmo tamanho do form, ocupando o que seria o plano de fundo, porém sem alinhamento, o que permitiria colocar outros controles com Align definido por cima dele. Se for preciso, também se pode enviar o TImage para trás, clicando com a direita sobre ele, depois em Control>Send To Back.
GOSTEI 1
Mais Respostas
Joel Rodrigues
06/02/2015
Não é possível fazer de forma automática, pois o TImage não é um container. Esse tipo de manipulação precisa ser feita manualmente, posicionando cada controle em seu devido lugar e ativando as âncoras para ele permanecer fixo.
GOSTEI 0
Renato Rubinho
06/02/2015
Uma opção menos trabalhosa é utilizar o evento onResize do Parent dos objetos:
No exemplo a seguir coloquei o TImage e o TLabel dentro de um TPanel.
No OnResize do TPanel, removo o Align do TLabel, atribuo alClient ao TImage para alinhá-lo e depois removo, pois "já está posicionado onde desejo" e, por fim, atribuo alClient ao TLabel.
No exemplo a seguir coloquei o TImage e o TLabel dentro de um TPanel.
No OnResize do TPanel, removo o Align do TLabel, atribuo alClient ao TImage para alinhá-lo e depois removo, pois "já está posicionado onde desejo" e, por fim, atribuo alClient ao TLabel.
procedure Panel1Resize(Sender: TObject); begin Label1.Align := alNone; Image1.Align := alClient; Image1.Align := alNone; Label1.Align := alTop; end;
GOSTEI 0
Joel Rodrigues
06/02/2015
Se é pra manter os controles internos em posições fixas, será que essa opção é mesmo menos trabalhosa, uma vez que envolve codificação para todos os controles em questão? E se consideramos que a cada pixel alterado nas dimensões esse evento é disparado, teríamos essa "montagem" da interface sendo feita inúmeras vezes.
Abraço.
Abraço.
GOSTEI 0
Renato Rubinho
06/02/2015
Joel Rodrigues, eu nunca tinha usado a propriedade Anchors...
Assim é obviamente melhor.
Faz a mesma coisa, mas sem uma linha de programação.
Assim é obviamente melhor.
Faz a mesma coisa, mas sem uma linha de programação.
GOSTEI 0