A propriedade Parent (Delphi)

Publicado: 08/02/2011 por Alexandre De Carli em Dicas para Delphi
Tags:, , ,

Olá, nesta matéria irei explicar um pouco sobre a propriedade Parent, que pode ser muito parecida com o “Owner” e ao mesmo tempo totalmente distinta.

A diferença entre elas é que Owner é o proprietário responsável pela referência de que quando o “Owner” dele for destruído, ele é destruído junto. Enquanto Parent faz referência ao componente que contém ele… Como eu citei na Parte 2 do Guia iniciante, para identificar Parent em tempo de projeto também pode ser clicando em cima do componente e apertar ESC, que ele dará foco ao componente que contém ele.

O Owner nao pode ser trocado diretamente após a criação, e pode ser trocado indiretamente quando mudamos o Parent do Objeto…
Mas quando mudamos o Parent mudamos também o posicionamento dele…

Vamos ver isso em um exemplo prático:

  1. Crie 2 Formulários
  2. Coloque no Form1 2 botões e no Form2 deixe a propriedade “Visible” para True
  3. Crie o Evento para o Button1 e nele coloque o código a seguir:

procedure TForm1.Button1Click(Sender: TObject);
begin
 if TButton(Sender).Parent = Self then
    TButton(Sender).Parent := Form2
 else
    TButton(Sender).Parent := Self;
end;

(Para maior compreensão do Self e Sender leia os artigos: Guia Iniciante Parte 1 e Parte 3

4.  Vá no Button2 e direcione o evento “OnCLick” para o: “Button1Click”
5.  Rode o programa e clique em cima de cada 1 dos dois botões

Viu que interessante?

Isso funciona para mudar entre os componentes: Panels, TabSheets, Forms, etc.

Repetindo… Quando você muda o Parent de um componente, ele muda automaticamente o Owner dele… Portanto como no exemplo acima, quando o Botão se encontra dentro do Form1, o Owner dele é o Form1, e mesma coisa quando ele estiver no Form2…

Abraços e até a próxima!

About these ads

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s