Home » Tutorials » VCL » Komponenten entwicklen

Komponenten entwicklen

Objekthierarchie

Delphi stellt in der Komponentenpalette sehr viele vorgefertigte Komponenten zur Verfügung. In den meisten Fällen reichen diese Standard-Komponenten alle aus. Doch es kann auch mal Situationen geben, in der Du mit den Delphi-Komponenten nicht auskommst. Deshalb kann man mit Delphi auch eigene Komponenten entwickeln und es ist gar nicht so schwer, wie man meinen mag.
Über ein Feedbeck (Kritik, Formulierungsschwächen, Unklarheiten, sachliche Fehler usw.) würde ich mich sehr freuen.

Die Grundlagen von Delphis Objektmodell

Wie Du wahrscheinlich schon weißt, ist eine Komponente nichts anderes als eine Klasse. Für jede Komponente benötigst Du eine Klassendefinition, die die grundlegenden Funktionen der Komponenten festlegt.
Sämtliche Delphi-Komponenten ordnen sich in einer Object-Hierachie an. Jeder Nachfahre eines Objektes erbt die Eigenschaften des Vorfahren.
Das Objekt-Modell will ich an einem kleinem Beispiel erläutern:

    Das Ur-Objekt soll in unserem Beispiel „Fahrzeug“ sein. Ein Nachfahre von „Fahrzeug“ ist z.B. „Auto“. Das „Auto“ hat alle Eigenschaften von „Fahrzeug“ geerbt. Auch „LKW“ ist ein Nachfahre vom Typ „Fahrzeug“. Einige Leute haben aber gesagt, dass sie mit „Auto“ nichts anfangen können und haben von diesem Typ neue Typen abgeleitet, z.B. „Opel Omega“ oder „Fiat Punto“. Diese neuen Typen haben alle Eigenschaften, die vom Typ „Auto“. Es wurden aber zusätzlich noch weitere Eigenschaften hinzugefügt. Auch von diesen neuen Klassen kann man wieder ableiten, z.B. ein Typ mit 2,4 oder 5 Türen.

Langer Rede kurzer Sinn:

Man muss eine Komponente immer von einem Typ ableiten. Die Komponente besitzt dann schon von „natur“ aus alle Eigenschaften, Methoden usw. wie dieser Vorfahre. Dies kann sehr praktisch sein, wenn man z.B. eine bereits vorhandene Komponente nur um eine Eigenschaft erweitern will.
Jede Komponente muss direkter oder indirekter Nachfahre des Klassentyps „TComponent“ sein. Dieser Typ enthält aber noch keine Ereignisse und nur die beiden Eigenschaften (Properties) „Name“ und „Tag“.
Von welchem Typ eine Komponente abgeleitet ist, lässt sich per Druck auf die F1 Taste in der OH nachlesen.

Verwendung visueller und nichtvisueller Komponenten

Visuelle (sichtbare) Komponenten verwendest Du zur optischen Gestaltung Deines Programms. Dialog-Elemente z.B. nutzt Du, um dem Anwender gewisse Eingaben zu ermöglichen, die Auswahl aus einer Reihe von Alternativen zu gestatten usw.
Grafische Elemente, u.a. TLabel, haben eine reine Ausgabefunktion. Man verwendet grafische Elemente zur übersichtlicheren Gestaltung der Oberfläche.
Man kann also sagen, alle Komponenten, die Du auf der Oberfläche sehen kannst sind visuelle Komponenten. Also wenn Du ein sichtbare Komponente entwickeln willst, ist diese visuell.
Nichtvisuelle Komponenten hingegen erfüllen Aufgaben, die nicht direkt am Bildschirm sichtbar sein müssen. Das bekannteste Bespiel ist wohl TTimer. Nichtvisuelle Komponenten stellen also gewisse Funktionen zur Verfügung, die nicht unbedingt an der Windowsoberfläche zu sehen sein müssen.
So, dass war es jetzt erst mal mit der Theorie.