1. A diferença entre Proprietário e Pai:
A propriedade Parent refere-se ao contêiner do componente, e o componente só pode ser exibido e movido dentro deste intervalo. Um exemplo é o seguinte:
(1) No formulário do Form1, coloque um Painel1 e amplie Painel1.
(2) Coloque um Button1 no Panel1;
(3) Coloque um Button2 no Form1.
Agora, se você mover o Panel1, o Button1 se moverá com o Panel1. Isso ocorre porque o pai do Button1 é o Panel1. Agora mova Button2 para Panel1 e mova Panel1 novamente. Button2 não se move com ele. Isso ocorre porque o pai de Button2 é Form1. Além do design do formulário, você deve prestar atenção em quem é o pai do componente. Ao criar um componente dinamicamente, você também deve indicar o pai do componente. Por exemplo, continue a operação no exemplo acima:
1)Procedimento Tform1.Button2click(Remetente:Tobjet);
2) Var
3) Botão: Botão T;
4) Comece
5) Botão:Tbutton.cerate(self);
6) Button.parent=painel1;
7) Button.lleft=0;
8) Button.top=0;
9) Button.caption:='OK';
10) Fim;
Quando Button2 for pressionado, um Button será criado no Panel1, e se a frase 6 for alterada para Button.parent:=self quando Button2 for pressionado, um Button será criado no Form1; Se você excluir a frase 6, nada acontecerá quando você pressionar o Botão2. Isso ocorre porque o método de criação não pode saber onde o componente deve ser exibido.
O atributo Owner refere-se ao proprietário do componente, que é responsável pela criação e lançamento do componente. Como no exemplo acima, o proprietário padrão do sistema de todos os componentes do formulário é o formulário, e o proprietário do formulário é o aplicativo. A propósito, o método create deve ter um parâmetro que represente o proprietário do componente. No exemplo acima, o proprietário do componente é o formulário, que é self.
O atributo Pai e o atributo Proprietário são atributos de tempo de execução e só podem ser configurados por meio de código durante a fase de tempo de execução.
2. A diferença entre o próprio e o remetente:
Na tabela de parâmetros do manipulador de eventos, há pelo menos um parâmetro Sender, que representa o componente que aciona o manipulador de eventos. No exemplo acima, Sender refere-se a Button2. Com o parâmetro Sender, vários componentes podem compartilhar o mesmo manipulador de eventos. como exemplo:
Procedimento Tform1.Buttonclick(Sender:Tobject);
Começar
Se remetente = botão1 então
Label1.caption:=′Olhe as flores desabrochando e caindo em frente à quadra
′ Else Label2.caption:=‘Olhando para as nuvens rolando no céu’
Fim;
Neste exemplo, Button1 e Button2 compartilham o manipulador de eventos Buttonclick.
Self se refere à classe na qual o programa é programado. No Delphi, a maior parte da programação está dentro do escopo do formulário. Se você estiver escrevendo uma classe ou componente, self se refere à classe ou componente. Podemos ver qual componente self representa na declaração de uma função ou procedimento, ou seja, self representa o componente antes do número '.' Além disso, deve-se notar que self só pode ser usado em métodos de classe, não em procedimentos ou funções. O uso a seguir está errado:
Função a1(B:Inteiro):Inteiro;
Começar
…
Botão:=tbutton.create(self);……
Fim;
3. A diferença entre Clientheight e Height, Clientwidth e Width:
Para componentes gerais, Height é Clientheight e Width é Clientwidth. Para formulários, Height é a altura incluindo a barra de título e Clientheight refere-se à altura da área do cliente do formulário. Da mesma forma, Clientwidth especifica a largura da área do cliente do formulário.
Como pode ser visto na afirmação acima, compreender as diferenças entre Ower e Parent, Self e Sender, Clientheight e Height, Clientwidth e Width é importante para uma programação correta em Delphi.