Der Epina Delphi-Kurs bietet Ihnen eine allgemeine Einführung in das Programmieren mit Delphi/Pascal. Mit vielen ausgearbeiteten Beispielen können Sie direkt in die Delphi-Programmierung einsteigen. Mehr dazu finden Sie hier....

OOPS - Ein naiver erster Zugang

Delphi ist nicht nur eine Entwicklungsumgebung für Pascal, sondern stellt dem Programmierer eine objektorientierte Umgebung in Form von Libraries und einigen Spracherweiterungen ('Object-Pascal') zur Verfügung. Damit ist es wichtig, sich von vorneherein mit objektorientierter Programmierung (OOP) zu beschäftigen. Viele Anfänger sehen allerdings die Einstiegsschwelle in die OOP als sehr hoch an und machen oft einen großen Bogen herum. Dabei ist die Anwendung objektorientierter Sprachkonstrukte ziemlich einfach und sehr effizient (und auch elegant). Um die Einstiegsschwelle so niedrig wie möglich zu halten, wollen wir daher im Folgenden eine erste Begegnung mit OOP machen, die sich sehr an der Delphi-Praxis orientiert (Theoretiker und Puristen mögen den Ansatz verzeihen, alle anderen profitieren davon).

Persönl. Anmerkung: Ich bin der festen Überzeugung, dass man Programmieren nicht durch Studieren von theoretischen Konzepten (mit anschließender Prüfung und Zeugnis) lernt, sondern nur durch einen iterativen Prozess der jeweils zwischen Theorie und Praxis wechselt. Mit mehr praktischer Erfahrung kann man auch mehr von der Theorie und umgekehrt verstehen. Es entsteht so eine Lernspirale, die den Anfänger irgendwann zum Könner macht.

Betrachtet man den Object Inspector, so sieht man dass er in zwei Bereiche gegliedert ist, die man durch einen Reiter umschalten kann - "Properties" und "Events". Im Bereich "Properties" lassen sich Eigenschaften von Programmkomponenten (wie z.B. Knöpfe) modifizieren, der Bereich "Events" ist für Ereignisse zuständig, die während des Programmlaufs auftreten können (z.B. wenn der linke Mausknopf gedrückt wird).

Eigenschaften

Die objektorientierte Programmierung geht von einem Modell aus, das sich sehr an die reale Welt anlehnt und indem die Daten und nicht so sehr die Vorgänge und Prozesse im Vordergrund stehen. Das bedeutet dass man reale oder abstrakte Objekte in der Programmiersprache abbildet. Diese Objekte haben Eigenschaften (properties), können auf Ereignisse (events) reagieren und haben meist auch Möglichkeiten, sich selbst oder andere zu modifizieren oder zu beeinflussen (methods).

Die Properties der Komponente TButton.

Genau so wie Eigenschaften in der realen Welt Aussehen und Verhaltensweisen von Objekten charakterisieren, genau so funktioniert das auch in Object-Pascal. Über Eigenschaften lassen sich die Größen, Form, Farben, Beschriftung, Verhalten, etc. von Komponenten einstellen.

Platzieren Sie probeweise einfach einen Knopf (Komponente TButton) auf dem Formular und selektieren Sie ihn mit der Maus. Die Eigenschaften des Knopfes werden nun im Object Inspector angezeigt. Verändern Sie im Object Inspector z.B. die Eigenschaft 'Caption' indem Sie auf der rechten Hälfte des Object Inspectors in der Zeile Caption einen Text eingeben. Sie sehen, dass sich die Beschriftung des Knopfes ändert.

Hinweis: Die Properties 'Name' und 'Caption' werden von Anfängern oft verwechselt. Die Property 'Caption' ist die Beschriftung während 'Name' den Namen der Komponente beschreibt mit dem die Komponente im Programmcode angesprochen werden kann.

Bei den Eigenschaften unterscheidet man zwei Arten: Design-Time Properties und Run-Time-Properties. Die erste Art wird im Object Inspector angezeigt, die zweite nicht. Solche Properties können - wie der Name sagt - nur zur Laufzeit des Programms benützt werden (sind aber sonst gleichwertig).

 

Ereignisse

Hätte man nur die Möglichkeit Eigenschaften von Komponenten im Programm zu verändern, so wären die meisten Programme ziemlich unnütz, da das Programm nur einen fixen Ablauf haben kann und nur durch Abfragen Parameter von außen bekommen würde. Diese andauernde Abfrage, ob neue Parameter gelten, würde das Programm ziemlich lähmen. Object-Pascal (wie jede andere Programmiersprache auch) muss deshalb auf externe Ereignisse reagieren können, und zwar ohne andauerndes Abfragen.

Dies wird durch sogenannte Events erreicht. Typische Events sind z.B. ein Tastendruck, oder ein Mausklick. Grundsätzlich werden Events vom Betriebssystem einer bestimmten Komponente zugeordnet, so dass nur die betroffene Komponente von diesem Event "erfährt". Man sagt auch: "ein Event ausgelöst wird". Es ist die Aufgabe des Programmierers auf diese Events zu reagieren. Jede Komponente hat in Delphi unterschiedliche Events, viele Arten sind aber in allen Komponenten gleich. Ein OnClick-Event gibt es deshalb bei fast jeder Komponente und wird durch einen Mausklick auf die Komponente ausgelöst.

Events können aber nicht nur durch Benutzeraktionen ausgelöst werden, sondern auch durch interne Vorgänge. Dadurch signalisiert das Programm bestimmte Zustände. Ein Beispiel eines solchen Events wäre der Event 'OnShow', der ausgelöst wird unmittelbar bevor ein Formular auf dem Bildschirm dargestellt wird. Auf diese Weise kann man quasi noch in letzter Sekunde das anzuzeigende Formular ändern.

Per Default (also am Anfang in 'jungfräulichem Zustand') sind alle Events einer Komponente leer - es passiert einfach nichts.

Die Ereignisse, die eine Komponente zur Verfügung stellt, findet man im Object Inspector unter dem Reiter "Events". Auf der linken Seite sind alle unterstützten Ereignisse aufgezählt (hier ein Knopf TButton), auf der rechten Seite wird die entsprechende Routine ('event handler') eingetragen. Zu Beginn sind alle Eventhandler undefiniert, die entsprechenden Einträge sind leer.

Last Update: 2008-09-09