1. Der Unterschied zwischen Eigentümer und Eltern:
Die Parent-Eigenschaft bezieht sich auf den Container der Komponente und die Komponente kann nur innerhalb dieses Bereichs angezeigt und verschoben werden. Ein Beispiel ist wie folgt:
(1) Platzieren Sie auf der Form von Form1 ein Panel1 und vergrößern Sie Panel1.
(2) Platzieren Sie einen Button1 auf Panel1;
(3) Platzieren Sie einen Button2 auf Form1.
Wenn Sie nun Panel1 verschieben, wird Button1 mit Panel1 verschoben. Dies liegt daran, dass das übergeordnete Element von Button1 Panel1 ist. Verschieben Sie nun Button2 nach Panel1 und bewegen Sie Button2 erneut. Dies liegt daran, dass das übergeordnete Element von Button2 Form1 ist. Zusätzlich zum Formulardesign sollten Sie darauf achten, wer das übergeordnete Element der Komponente ist. Wenn Sie eine Komponente dynamisch erstellen, sollten Sie beispielsweise den Vorgang im obigen Beispiel fortsetzen.
1)Prozedur Tform1.Button2click(Sender:Tobjet);
2)Var
3) Taste: T-Taste;
4) Beginnen Sie
5) Button:Tbutton.cerate(self);
6) Button.parent=panel1;
7) Button.lleft=0;
8) Button.top=0;
9) Button.caption:='OK';
10) Ende;
Wenn Button2 gedrückt wird, wird ein Button auf Panel1 erstellt, und wenn Satz 6 in Button.parent:=self geändert wird, wird beim Drücken von Button2 ein Button auf Form1 erstellt. Wenn Sie Satz 6 löschen, passiert nichts, wenn Sie Button2 drücken. Dies liegt daran, dass die Erstellungsmethode nicht wissen kann, wo die Komponente angezeigt werden soll.
Das Owner-Attribut bezieht sich auf den Eigentümer der Komponente, der für die Erstellung und Freigabe der Komponente verantwortlich ist. Wie im obigen Beispiel ist der Standardeigentümer des Systems für alle Komponenten im Formular das Formular und der Eigentümer des Formulars ist die Anwendung. Übrigens sollte die Methode create einen Parameter haben, der den Eigentümer der Komponente darstellt. Im obigen Beispiel ist der Eigentümer der Komponente das Formular, das self ist.
Das Parent-Attribut und das Owner-Attribut sind Laufzeitattribute und können nur während der Laufzeitphase durch Code festgelegt werden.
2. Der Unterschied zwischen Selbst und Sender:
In der Event-Handler-Parametertabelle gibt es mindestens einen Parameter Sender, der die Komponente darstellt, die den Event-Handler auslöst. Im obigen Beispiel bezieht sich Sender auf Button2. Mit dem Sender-Parameter können mehrere Komponenten denselben Event-Handler teilen. als Beispiel:
Prozedur Tform1.Buttonclick(Sender:Tobject);
Beginnen
Wenn sender=button1 dann
Label1.caption:=′Sehen Sie sich die Blumen an, die vor dem Hof blühen und fallen
′ Else Label2.caption:=‘Blick auf die am Himmel rollenden Wolken’
Ende;
In diesem Beispiel teilen sich Button1 und Button2 den Buttonclick-Ereignishandler.
Self bezieht sich auf die Klasse, in der das Programm programmiert ist. Daher bezieht sich self auf die Klasse oder Komponente. Wir können sehen, welche Komponente self in der Deklaration einer Funktion oder Prozedur darstellt, d. h. self repräsentiert die Komponente vor der Zahl „.“ Im ersten Beispiel repräsentiert self beispielsweise Tform1. Darüber hinaus ist zu beachten, dass self nur in Klassenmethoden und nicht in Prozeduren oder Funktionen verwendet werden kann. Die folgende Verwendung ist falsch:
Funktion a1(B:Integer):Integer;
Beginnen
…
Button:=tbutton.create(self);……
Ende;
3. Der Unterschied zwischen Clientheight und Height, Clientwidth und Breite:
Bei allgemeinen Komponenten ist „Height“ die „Clientheight“ und „Breite“ die „Clientwidth“. Bei Formularen ist „Height“ die Höhe einschließlich der Titelleiste, und „Clientheight“ bezieht sich auf die Höhe des Clientbereichs des Formulars. Ebenso gibt Clientwidth die Breite des Clientbereichs des Formulars an.
Wie aus der obigen Aussage hervorgeht, ist es für die korrekte Programmierung in Delphi wichtig, die Unterschiede zwischen Ower und Parent, Self und Sender, Clientheight und Height, Clientwidth und Width zu verstehen.