Lazarus - Open-Source Entwicklungssystem
Version 0.9.28.2
Einführung in Grafikprogrammierung

Informatik
S. Spolwig
J. Penon

Ü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.

Formular







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

ZeigefingerDiese 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.

  1. 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;

  2. 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;

    ZeigefingerRegel: 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. )

  3. 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;

Und nun starten und staunen!
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.

zum Seitenanfang springen

zum Seitenanfang springen