1. Разница между Владельцем и Родителем:
Свойство Parent относится к контейнеру компонента, и компонент можно отображать и перемещать только в пределах этого диапазона. Пример следующий:
(1) В форме Form1 поместите Panel1 и увеличьте Panel1.
(2) Поместите кнопку Button1 на панель Panel1;
(3) Поместите кнопку Button2 на форму Form1.
Теперь, если вы переместите Panel1, Button1 переместится вместе с Panel1. Это связано с тем, что родителем Button1 является Panel1. Теперь переместите Button2 на Panel1 и снова переместите Panel1. Это связано с тем, что родительским элементом Button2 является Form1. Помимо оформления формы, следует обратить внимание на то, кто является родителем компонента. При динамическом создании компонента также следует указать родителя компонента. Например, продолжите операцию в приведенном выше примере:
1)Процедура Tform1.Button2click(Отправитель:Tobjet);
2)Вар
3) Кнопка: Кнопка;
4) Начать
5) Кнопка: Tbutton.cerate(self);
6) Кнопка.родитель=панель1;
7) Кнопка.lleft=0;
8) Кнопка.топ=0;
9) Button.caption:='ОК';
10) Конец;
При нажатии Button2 на Panel1 будет создана кнопка, а если предложение 6 будет изменено на Button.parent:=self при нажатии Button2, на Form1 будет создана кнопка. Если вы удалите предложение 6, при нажатии Button2 ничего не произойдет. Это связано с тем, что метод создания не может знать, где должен отображаться компонент.
Атрибут Owner относится к владельцу компонента, который отвечает за создание и выпуск компонента. Как и в приведенном выше примере, системным владельцем по умолчанию всех компонентов формы является форма, а владельцем формы — приложение. Кстати, метод create должен иметь параметр, представляющий владельца компонента. В приведенном выше примере владельцем компонента является форма, то есть self.
Атрибут Parent и Owner являются атрибутами времени выполнения и могут быть установлены только с помощью кода на этапе выполнения.
2. Разница между «Я» и «Отправителем»:
В таблице параметров обработчика событий есть по крайней мере один параметр Sender, который представляет компонент, который запускает обработчик событий. В приведенном выше примере Sender ссылается на Button2. С помощью параметра Sender несколько компонентов могут использовать один и тот же обработчик событий. в качестве примера:
Процедура Tform1.Buttonclick(Отправитель:Объект);
Начинать
Если отправитель=button1, то
Label1.caption:=’Посмотрите, как цветут и падают цветы перед двором.
’ Else Label2.caption:=’Глядя на облака, катящиеся по небу’
Конец;
В этом примере Button1 и Button2 используют общий обработчик событий Buttonclick.
Self относится к классу, в котором запрограммирована программа. В Delphi большая часть программирования находится в области действия формы. Следовательно, self относится к форме. Мы можем увидеть, какой компонент self представляет в объявлении функции или процедуры, то есть self представляет компонент перед номером «.». Например, в первом примере self представляет Tform1. Кроме того, следует отметить, что self можно использовать только в методах класса, а не в процедурах или функциях. Следующее использование неверно:
Функция a1(B:Целое число):Целое число;
Начинать
…
Кнопка:=tbutton.create(self);……
Конец;
3. Разница между Clientheight и Height, Clientwidth и Width:
Для общих компонентов высота — это высота клиента, а ширина — это ширина клиента. Для форм высота — это высота, включая строку заголовка, а высота клиента — это высота рабочей области формы. Таким же образом Clientwidth задает ширину клиентской области формы.
Как видно из приведенного выше утверждения, понимание различий между Ower и Parent, Self и Sender, Clientheight и Height, Clientwidth и Width важно для правильного программирования в Delphi.