TComponent-Zweig
Nach oben zu Objekte, Komponenten und Steuerelemente
Der TComponent-Zweig enthält Klassen, die von TComponent, nicht aber von TControl abstammen. Bei den Objekten in diesem Zweig handelt es sich um Komponenten, die Sie zur Entwurfszeit auf Formularen bearbeiten können, die zur Laufzeit aber für den Benutzer nicht sichtbar sind. Es handelt sich dabei um persistente Objekte, mit folgenden Merkmalen:
- Sie können in der Tool-Palette angezeigt und im Formular-Designer geändert werden.
- Sie können andere Komponenten besitzen und verwalten.
- Sie können sich selbst laden und speichern.
Verschiedene Methoden in TComponent bestimmen, wie sich Komponenten während der Entwurfszeit verhalten und welche Informationen zusammen mit einer Komponente gespeichert werden. Das Streaming (das Speichern und Laden von Formulardateien, die Informationen über die Eigenschaftswerte der Objekte eines Formulars enthalten) wird in diesem Zweig eingeführt. Eigenschaften sind persistent, wenn sie "published" sind, und "published"-Eigenschaften werden automatisch gestreamt.
Der TComponent-Zweig führt außerdem das Eigentümer-Konzept ein, das sich durch die gesamte Komponentenbibliothek fortsetzt. Zwei Eigenschaften unterstützen das Eigentümer-Konzept: Owner und Components. Jede Komponente hat die Eigenschaft Owner, die auf eine andere Komponente verweist, die ihr Eigentümer ist. Eine Komponente kann Eigentümer anderer Komponenten sein. In diesem Fall werden alle Komponenten, deren Eigentümer die Komponente ist, in ihrer Eigenschaft Components aufgelistet.
Jedem Komponentenkonstruktor wird ein Parameter übergeben, der den Eigentümer der neuen Komponente bezeichnet. Falls der übergebene Eigentümer vorhanden ist, wird die neue Komponente der Komponentenliste des Eigentümers hinzugefügt. Neben der Verwendung der Komponentenliste als Verweis auf Komponenten, deren Eigentümer eine Komponente ist, ermöglicht diese Eigenschaft auch das automatische Freigeben dieser Komponenten. Wenn die Komponente einen Eigentümer hat, wird sie freigegeben, sobald der Eigentümer freigegeben wird. Da beispielsweise TForm von TComponent abstammt, werden mit der Freigabe eines Formulars auch alle Komponenten auf dem Formular und der von diesen belegte Speicher freigegeben. (Vorausgesetzt natürlich, dass die Komponenten entsprechend programmierte Destruktoren besitzen, die sie korrekt freigegeben.)
Falls eine Eigenschaft zu einem Objekt vom Typ TComponent oder einem davon abgeleiteten Typ gehört, erstellt das Streaming-System beim Lesen dieses Objekts eine Instanz mit diesem Typ. Ist der Eigenschaftyp von TPersistent und nicht von TComponent abgeleitet, dann verwendet das Streaming-System die vorhandene Instanz, die über die Eigenschaft verfügbar ist, und liest die Eigenschaftswerte dieser Instanz.
Der TComponent-Zweig enthält unter anderem die folgenden Klassen:
- Die Klasse TActionList, die eine Liste von Aktionen verwaltet, die von Komponenten und Steuerelementen, z. B. Menüeinträgen und Schaltflächen, verwendet werden.
- Die Klasse TMainMenu, die eine Menüleiste und die entsprechenden Dropdown-Menüs für ein Formular bereitstellt.
- Die Klassen TOpenDialog,TSaveDialog, TFontDialog, TFindDialog, TColorDialog usw., die häufig verwendete Dialogfelder bereitstellen.
- Die Klasse TScreen, die verfolgt, welche Formulare und Datenmodule von der Anwendung instantiiert wurden, sowie das aktive Formular und das aktive Steuerelement auf diesem Formular, die Größe und Bildschirmauflösung und die Cursor und Schriftarten, die für die Anwendung zur Verfügung stehen, verfolgt.
Komponenten, die keine visuelle Oberfläche benötigen, können direkt von TComponent abgeleitet werden. Um ein Tool, wie beispielsweise einen TTimer, zu erstellen, können Sie es von TComponent ableiten. Dieser Komponententyp befindet sich in der Tool-Palette, führt aber interne Funktionen aus, auf die im Code zugegriffen wird und die zur Laufzeit nicht auf der Benutzeroberfläche erscheinen.
Weitere Informationen über das Festlegen von Eigenschaften, den Aufruf von Methoden und das Verwenden von Ereignissen mit Komponenten finden Sie unter Mit Komponenten arbeiten.