Home » Tutorials » VCL » Komponenten entwicklen

Komponenten entwicklen

Design- und Laufzeit

Ja gut, es kommt jetzt noch ein klitzekleines bisschen Theorie. Aber dafür ist das Kapitel auch ziemlich klein.

Der Design- und Laufzeit-Modus

Bevor Du jetzt richtig heftig in die Komponentenprogrammierung einsteigst musst Du noch eins wissen:
Die Komponenten, die Du bis jetzt genutzt hast, verfügen u.a. über Eigenschaften. Im Objektinspektor können diese Eigenschaften bereits während der Entwicklung festgelegt werden. Zum Beispiel kannst Du sofort die Beschriftung eines Buttons festlegen.
Wenn Du die Eigenschaften im OI änderst, arbeitest Du im Design-Modus. Dieser unterscheidet sich vom Laufzeit-Modus. Der Laufzeit-Modus stellt den Zustand des ablaufenden Programms dar. Wenn Du eine Eigenschaft einer Komponente dynamisch einen Wert zuweist, erfolgt dieser Zugriff also im Laufzeit-Modus.
Die Unterscheidung in Laufzeit- und Design-Modus spielt bei der Komponentenentwicklung eine erhebliche Rolle. Du musst bei der Erstellung der Komponentenklasse bedenken, welche Eigenschaften der Komponente im Objektinspektor auftauchen sollen, welche also zur Design-Zeit zur Verfügung stehen sollen und welche ausschließlich zur Laufzeit verfügbar sind.
Methoden, Eigenschaften usw., die du im „Public“-Teil deklarierst stehen nur zur Laufzeit zur Verfügung. Für Eigenschaften, die im OI im Design-Modus zur Verfügung stehen sollen, stellt Delphi einen weiteren Blockbezeichner innerhalb der Typendeklaration einer Klasse zur Verfügung, den Bezeichner „Published“. Deklarationen haben in beiden Fällen die gleiche Bedeutung, nur stehen die Deklarationen, die im „Published“-Teil deklariert worden sind auch im Design-Modus zur Verfügung.
Die Vereinbarungen im „Published“-Block werden, deshalb auch als „Design-Schnittstelle“ bezeichnet. Vereinbarungen innerhalb eines „Public“-Blocks als „Laufzeit-Schnittstelle“, da diese nur zur Laufzeit zur Verfügung stehen.

Die verschiedenen Deklarations-Abschnitte

Wie Du wahrscheinlich schon gesehen hast, gibt es in einer Unit mehrere Deklarations-Abschnitte. Zwei davon kennst Du wahrscheinlich schon: Public und Private. Bei der Programmierung von Komponenten sind noch zwei zusätzliche Eigenschaften dazugekommen: Published und Protected.

Public

Vereinbarungen, die im Public-Abschnitt deklariert werden, sind unterliegen keinerlei Beschränkungen. Sie sind überall dort verfügbar, wo auf dessen Klassen verwiesen werden kann. Schreibgeschütze Eigenschaften kommen meist hier rein.

Private

Dort kann nur innerhalb eines Moduls (also nur innerhalb Deiner Komponente) drauf zugegriffen werden. Funktionen, z.B. können nicht von außerhalb aufgerufen werden. Dort musst Du alle Variablen für Deine späteren Properties und Deine ganzen „Prüffunktionen“ und „Prüfprozeduren“.

Protected

Deklarationen sind innerhalb des Moduls (Unit) und in allen abgeleiteten Klassen sichtbar.

Published

Hier werden die einzelnen Eigenschaften, die im Objektinspektor sichtbar seien sollen, deklariert. Schreibgeschütze Eigenschaften haben hier aber nichts zu suchen.