is-Logo Einführung in Delphi
Uebung 1.3 - Projekt öffnen und erweitern

S. Spolwig

[Home | Unterrichtssequenzen]

Aufgabenstellung :

Baustellenampel  automatisieren

Eine ordentliche Ampel muss auch nachts und  am Wochenende automatisch laufen können. Das ist ziemlich einfach zu programmieren. Die Schaltphasen der drei Lampen brauchen nur nacheinander mit kleinen Pausen dazwischen abzulaufen.

Die Button-Clicks werden nicht mehr manuell bedient, sondern in einer Methode vom Programm selbst wiederholt bis die Automatik abgestellt wird.

Dazu sind folgende Schritte erforderlich:

Ceci n' est pas une Ampel!

'Ampel'

In Anlehnung an Magritte will ich noch einmal daran erinnern, dass es sich bei dieser Übung nicht um ein Objekt "Ampel" handelt. Wir haben nur ein paar GUI-Komponenten herum geschoben, so dass es aussieht wie eine Ampel. Wir sind noch dabei, Delphi kennen zu lernen und ein paar Grundbegriffe - richtige Ampeln machen wir auch bald.

Ausbaustufe 1 : Automatik einbauen

  1. Führen Sie zwei neue Buttons ein: AutoBtn und ManuellBtn

  2. Deklarieren Sie im Interface unter var eine Variable AutomatikAus : boolean;
    mit der sich das Programm merkt, ob die automatische Steuerung gerade ein- oder ausgeschaltet ist.

  3. Fügen Sie im Interface bei uses uZeit; ein. Damit können wir die Klasse Zeit benutzen, aus der wir die Anweisung für die Verzögerung SetPause(..) holen.

  4. Erzeugen Sie durch Doppelklick auf AutoBtn eine Ereignismethode!
    Fügen Sie diese Anweisungen ein:
     
    AutomatikAus := false;      // sonst geht's nicht los

    repeat
      RotBtnClick(Sender);     
    // Nachricht an den RotBtnClick, auszuführen
      Zeit.Setpause(500 );
      GelbBtnClick(sender);
      Zeit.Setpause(500 );
      GruenBtnClick(sender);
      Zeit.Setpause(500 );
    until AutomatikAus = true;

  5. Erzeugen Sie durch Doppelklick auf ManuellBtn eine Ereignismethode zum Abschalten der Automatik
    Fügen Sie diese Anweisungen ein: 
    AutomatikAus := true;

  6. Starten Sie das Programm und testen Sie es!

========================================================================

Ausbaustufe 2 : Umschalten

Damit die Handsteuerung und die automatische Steuerung nicht gleichzeitig bedient werden können, sollten die Einzelbuttons deaktiviert sein, wenn die Automatik läuft. Das lässt sich mit einer privaten Formular-Methode (also nicht mit einer "Click-Methode") machen:

  1. Fügen Sie im Interface unter private ein: procedure Umschalten;

  2. Schreiben Sie von Hand im Implementation folgende Prozedur (mit den Einrückungen!) :
     
    procedure TFensterFrm.Umschalten;
    (* ----------------------------- *)
    begin
      if AutomatikAus = true
      then
        begin
          GelbBtn.Enabled  := true;
          RotBtn.Enabled   := true;
          GruenBtn.Enabled := true
        end
      else
        begin
          GelbBtn.Enabled  := false;
          RotBtn.Enabled   := false;
          GruenBtn.Enabled := false;
        end;
    end;

  3. Rufen Sie diese Prozedur dort auf, wo sie gebraucht wird, d.h. fügen Sie den Methodennamen Umschalten an der richtigen Stelle ein!



©    05. Oktober 2008    Siegfried Spolwig

page_top