Übung - Fachklassen benutzen (TImage)
In dieser Übung lernen wir, wie Objekte erzeugt und manipuliert werden. Sie werden von einer Klasse abgeleitet und haben dadurch alle Attribute und Methoden wie in ihrer Klasse beschrieben Man spricht dann von Exemplaren oder Instanzen der Klasse. Die Klasse selbst ist also nur die Beschreibung, die Exemplare (die eigentlichen Objekte) aber leben.
A. Problemanalyse und Anforderungsdefinition
Es soll ein Programm entwickelt werden, das ein Bild mit grafischen Figuren darstellt. Das Bild enthält ein Zeichenblatt, auf dem die Figuren (Rechtecke, Kreise, Linien u.a.) dargestellt werden. Das Programm benutzt dabei eine fertige Unit mit dem Namen ugrafik.pas. Mithilfe dieser Unit können Figuren gezeichnet, bewegt und gelöscht werden.
Das noch leere Entwurfsformular mit der Image-Komponente, die das Zeichenblatt enthält.
Die Programmsteuerung zum Anzeigen der Figuren erfolgt mit Buttons (Ende, Rechteck, Kreise, usw.). Wenn der Button Rechteck gedrückt wird, erscheint ein Rechteck auf dem Bild usw.
B. Objektorientierte Analyse (OOA)
Das Fenster soll folgende GUI-Objekte enthalten: FensterFrm, BildImg (Image), SteuerPnl, RechteckBtn, LoeschBtn, EndeBtn.
Das Projekt enthält außerdem zunächst folgende andere Objekte, die die eigentliche Aufgabe beinhalten:
ein weißes Zeichenblatt und ein blaues Rechteck.
C. Implementation
Diese Schritte sind grundsätzlich für jedes
Objekt notwendig, immer dieselben Schritte in dieser Reihenfolge
| Was? | Wo? | Wie? (Beispiele) |
|---|---|---|
| 1. Exemplar als Variable deklarieren | Unter var einfügen: | Rechteck : TRechteck; |
| 2. Exemplar erzeugen | In die Ereignismethode TFensterFrm.FormCreate einfügen: | Rechteck := TRechteck.Create; |
| 3. Objekt mit Anfangswerten versehen | In die Ereignismethode TFensterFrm.FormCreate einfügen: | Rechteck.SetPos(....); |
| 4. Aufträge an Exemplar senden | In die jeweilige Ereignismethode einfügen: | Rechteck.Zeigen; |
Vorbereitungen
Um die Arbeit zu erleichtern können Sie ein Vorlage herunterladen. Diese Vorlage enthält
ein Lazarus-Programm, das bereits alle Button, das Panel und das Bild enthält. Die folgenden Arbeitsschritte beziehen sich auf diese Vorlage.
Kopieren Sie dieses Programm in Ihren Ordner, starten Sie Lazarus und
öffnen Sie das Projekt "grafueb.lpr". Führen Sie nacheinander folgende
Arbeitsschritte aus:
Textzeilen in schwarzer Schrift sind schon vorhanden, rote Textzeilen müssen durch Doppelklick
erzeugt werden, grüne Textzeilen sind
einzutippen.
-
Exemplar als Variable deklarieren
Um dem Programm das Exemplar bekannt zu machen, muss es im Interface-Teil als Variable deklariert werden.
var
FensterFrm : TFensterFrm;
Zeichenblatt : TZeichenblatt;
Rechteck : TRechteck;
-
Exemplar erzeugen
Die Grafikobjekte sollen sofort bei Programmstart erzeugt werden; das übernimmt TFensterFrm.FormCreate. Zeichenblatt wird verbunden mit der Image-Komponente, bekommt eine Farbe und wird gleich angezeigt. Folgender Quellcode ist bereits vorhanden, um das Zeichenblatt zu erzeugen.procedure TFensterFrm.FormCreate(Sender: TObject);
// -----------------------------------------------
begin
Zeichenblatt := TZeichenblatt.Create;
Zeichenblatt.SetLink(BildImg);
Zeichenblatt.SetFuellFarbe(clwhite);
Zeichenblatt.Zeigen;Um ein Exemplar der Klasse TRechteck zu erzeugen und mit Anfangswerten zu versehen, ergänzen Sie dazu in FormCreate:
Rechteck := TRechteck.Create;
Regel: Objekte können erst dann angesprochen werden,
wenn es sie schon erzeugt sind!
(Wenn Sie die Fehlermeldung erhalten:
"... ist eine Exzeption der Klasse EAccessViolation aufgetreten",
dann haben Sie sicher vergessen, das Objekt zu erzeugen. ) - Aufträge an Exemplar senden
Erstellen Sie mit Doppelklick auf das Button "Rechteck" die Ereignisprozedur "RechteckBtn.Click" und fügen Sie zwischen begin und end die jeweiligen Methoden ein.
procedure TFensterFrm.RechteckBtn.Click(Sender: TObject);
//-----------------------------------
begin
Rechteck.SetPos(10, 10, 150, 100);
Rechteck.SetFuellFarbe(clBlue);
Rechteck.Zeigen;
end;
Zusatzaufgaben:
- Rechteck löschen
Das Rechteck hat eine Methode Loeschen. Rufen Sie diese im LoeschBtn auf! - Weiteree Rechtecke auf den Bildschirm zaubern.
- Ellipsen, Kreise und Linien erzeugen und zu einem Bild (Lokomotive, Auto usw.) zusammenfügen.
- Ein Kunstwerk nach dem Vorbild Minimalismus erschaffen.
Diese Anleitung bezieht sich auf ein Beispiel für Delphi von Siegfried Spolwig.