Neues Projekt: Baustellenampel
Diese Übung soll die erste Übung erweitern mit
zusätzlichen GUI-Komponenten. Sie soll etwas darstellen, das wie eine
Ampel aussieht. Sie soll eine primitive manuelle Schaltung haben
wie an einer Straßenbaustelle, wo ein Mann die Ampel per Hand steuert.
Die Ampel hat die drei Lampen Rot, Grün und Gelb und zum Schalten für
jede Lampe einen Button.
Übung 1.1 - Schleifen
(Zählschleife, vor- und nachprüfende Schleife)
Blinken
Als Erweiterungen soll eine Blinkschaltung für die gelbe
Lampe eingebaut werden. Dazu wird ein neuer Button: BlinkBtn
eingebaut und eine private Methode Blinken1. Der Button-Click
ruft die Blinken-Methode auf, die dann ausgeführt wird:
procedure
TFensterFrm.BlinkBtnClick(Sender: TObject);
begin
Blinken1;
end; |
Das Blinken selbst lässt sich leicht mit einer
Schleife realisieren, die dafür sorgt, dass die gelbe Lampe im Wechsel
'an' oder 'aus' gezeigt wird mit einer kleinen Pause dazwischen.
Im Gegensatz zu GUI-Methoden, die immer durch Doppelklick erzeugt
werden müssen, werden private Methoden, die irgendwelche Verarbeitungen
erledigen von Hand im Implementation-Teil geschrieben.
procedure TFensterFrm.Blinken1;
// --------------------------------------------------
var zaehler : integer;
begin
GelbPnl.Color := clYellow;
for zaehler := 1 to 10 do // 10 mal -
Zählschleife
begin
GelbPnl.Color := clYellow;
Zeit.SetPause(200);
GelbPnl.Color := clBlack;
Zeit.SetPause(200);
end;
end; |
Die Methode SetPause(200)
ist in der Klasse TZeit enthalten, die wir als zusätzliche Unit
importieren müssen.
Fügen Sie dazu bei im Interface-Teil bei uses hinzu:
uZeit.
Außerdem verlangt
DELPHI, dass alle privaten Methoden im Interface-Teil unter der
Zeile private deklariert werden müssen:
procedure
Blinken1;
Das war 's!
(Zu
Risiken und Nebenwirkung fragen Sie Ihren Nachbarn oder Lehrer ;-)
--------------------------------------------------------------------------
Wenn die
Zählschleife fehlerfrei läuft, schreiben Sie bitte zwei weitere
Methoden
Blinken2 (while - do) und
Blinken3 (repeat - until)!
Da diese Schleifen
keine voreingestellte Wiederholzahl haben, prüfen sie jedesmal die
aktuelle Abbruchbedingung. Dazu führen wir eine Zustandsvariable BlinkenAus
: boolean ein, die mit einem neuen Aus-Button auf den Wert true
gesetzt wird.
procedure TFensterFrm.AusBtnClick(Sender:
TObject);
// ------------------------------------------------
begin
BlinkenAus := true;
end; |
Nicht
vergessen : Doppelklick auf den AusBtn!!!
|