Lazarus/Komponenten, Eigenschaften, Ereignisse
Nachdem wir im vorigen Abschnitt ein einfaches Beispiel für ein Lazarus-Programm gesehen haben, sollten wir jetzt einige Begriffe klären, damit wir leichter über die Dinge reden können.
Eigenschaften von Komponenten
An dem Beispiel im vorigen Abschnitt haben wir gesehen, dass sich die Eigenschaften etwa eines Buttons ändern können, während das Programm läuft. Es gibt unterschiedliche Arten von Eigenschaften. Man spricht in diesem Zusammenhang wie in der Mathematik auch von Variablen, die einen bestimmten Inhalt haben.
Typen von Eigenschaften
In Eigenschaften bzw. Variablen können unterschiedlichste Dinge gespeichert sein, man spricht von unterschiedlichen Datentypen, die in Pascal/Lazarus englische Bezeichnungen tragen:
Typ-Bezeichnung | Inhalt der jeweiligen Variable |
---|---|
Integer | eine ganze Zahl (positive und negative Zahlen) |
Real oder Double | eine Kommazahl |
Char | eine einzelnes Zeichen (Buchstabe, Ziffer, Sonderzeichen) |
String | eine Zeichenkette von Buchstaben, Ziffern und/oder Sonderzeichen |
Boolean | ein so genannter Wahrheitswert, der nur die Werte true (wahr) und false (falsch) annehmen kann. |
Daneben gibt es noch viele weitere Datentypen, die uns aber zur Zeit nicht interessieren müssen.
Ereignisse von Komponenten
Mit unterschiedlichen Komponenten kann man unterschiedliche Dinge anfangen. Man sagt auch: Der Benutzer löst ein Ereignis aus. Bei Knöpfen (Buttons) ist das typische Ereignis schlechthin das Draufklicken. Klickt man im Entwurfsfenster doppelt auf den Button, so öffnet sich der Teil des Programms, der dafür zuständig ist, was beim Draufklicken passieren soll (oder dieser Programmteil wird neu erzeugt). Das Gleiche kann man erzielen, indem man im Objektinspektor auf den Reiter "Ereignisse" wechselt und dort doppelt ins Feld hinter OnClick klickt. Das ist umständlicher, aber bei manchen Komponenten gibt es mehrere spannende Ereignisse und da muss man auf dieses Vorgehen zurückgreifen.
TButton-Komponenten
Wie wir schon gesehen haben, werden die Eigenschaften einer Komponente angesprochen, indem man zuerst den Namen der Komponente, dann direkt einen Punkt und dann direkt dahinter den Namen der Eigenschaft setzt. Die TButton-Komponente realisiert auf der Benutzungsoberfäche einen Druckknopf, bei dem durch Drücken ein bestimmtes Teilprogramm ausgeführt wird.
Die wichtigsten Eigenschaften
Eigenschaft | Typ | Beschreibung |
---|---|---|
Name | String | interner Name des Buttons (bitte nur über den Objektinspektor ändern) |
Caption | String | Beschriftung des Buttons |
Enabled | Boolean | true: Der Button kann angeklickt werden. false: Der Button kann nicht angeklickt werden. |
Visible | Boolean | true: Der Button ist sichtbar. false: Der Button ist unsichtbar. |
Font | TFont | Schriftart. Am besten über den Objektinspektor einstellen. |
Die wichtigsten Ereignisse
Ereignis | wird ausgelöst, wenn ... |
---|---|
OnClick | ... der Benutzer auf den Button klickt. |
Ein Beispiel
Das folgende Beispiel funktioniert, wenn man zwei Buttons mit den Namen Button1 und Button2 auf dem Formular platziert.
unit Button2_main;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
Button2.Enabled:=false; // blockiere Button2
Button1.Caption:='Jetzt kann man Button2 nicht mehr klicken';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Button2.Caption:='Du hast mich gedrückt.';
end;
initialization
{$I button2_main.lrs}
end.
TLabel-Komponenten
Häufig ist es zweckmäßig, auf der Benutzungsoberfläche bestimmte Dinge zusätzlich zu beschriften. Das gelingt mit so genannten Labels. Sie haben eigentlich nur die Funktion, Wörter und Zahlen anzuzeigen.
Die wichtigsten Eigenschaften
Eigenschaft | Typ | Beschreibung |
---|---|---|
Name | String | interner Name des Buttons (bitte nur über den Objektinspektor ändern) |
Caption | String | Beschriftung des Buttons |
Font | TFont | Schriftart. Am besten über den Objektinspektor einstellen. |
Visible | Boolean | true: Das Label ist sichtbar. false: Das Label ist unsichtbar. |
Die wichtigsten Ereignisse
Eigentlich sind Labels nur passive Elemente. Trotzdem haben sie auch Ereignisse, die der Benutzer auslösen kann.
Ereignis | wird ausgelöst, wenn ... |
---|---|
OnClick | ... der Benutzer auf den Button klickt. |
OnDblClick | ... der Benutzer einen Doppelklick auf dem Label ausführt. |
Die TEdit-Komponenten
Um nicht nur mit der Maus auf Knöpfe drücken zu können, sondern auch Wörter und Zahlen mit der Tastatur eingeben zu können, kann man TEdit-Komponenten verwenden, die man auch als "Eingabefelder" bezeichnen könnte.
Die wichtigsten Eigenschaften
Eigenschaft | Typ | Beschreibung |
---|---|---|
Name | String | interner Name des Buttons (bitte nur über den Objektinspektor ändern) |
Text | String | Inhalt des Edit-Feldes |
Enabled | Boolean | true: Text kann eingegeben werden. false: Text kann nicht eingegeben werden. |
Font | TFont | Schriftart. Am besten über den Objektinspektor einstellen. |
Visible | Boolean | true: Das Edit-Feld ist sichtbar. false: ... nicht sichtbar. |
Die wichtigsten Ereignisse
Ereignis | wird ausgelöst, wenn ... |
---|---|
OnChange | ... den Inhalt des Feldes bearbeitet |
OnEnter | ... den Cursor in das Edit-Feld setzt (etwa mit der Maus). |
OnEditingDone | ... der Benutzer die Eingabe mit der Eingabetaste abschließt oder mit der Maus auf eine andere Komponente klickt. |
TForm (das Fenster selbst)
Auch das Programmfenster selbst (im Lazarus-Jargon "Form" genannt) hat Eigenschaften und Ereignisse
Die wichtigsten Eigenschaften
Eigenschaft | Typ | Beschreibung |
---|---|---|
Name | String | interner Name des Buttons (bitte nur über den Objektinspektor ändern) |
Caption | String | Überschrift des Programmfensters (etwa der Programmtitel) |
Die wichtigsten Ereignisse
Ereignis | wird ausgelöst, wenn ... |
---|---|
OnCreate | ... das Programm gestartet wird. |
OnClick | ... der Benutzer in einen sonst leeren Bereich des Fensters klickt |
Das Ereignis OnCreate ist wichtig, wenn schon Dinge erledigt werden sollen, bevor der Benutzer überhaupt irgendetwas tun kann.
- Ein bisschen Design
Ändere die Schriftart verschiedener Knöpfe ab! - Beschriftungen
Ändere die Beschriftung eines Knopfes. Und zwar einmal, indem Du die Eigenschaft "Caption" im Objektinspektor veränderst. Und einmal, indem Du im Reiter "Ereignisse" des Objektinspektors für das Ereignis "OnCreate" einen Programmteil erstellst und darin die Beschriftung des Knopfes (oder mehrerer) änderst. - Komponenten beeinflussen sich gegenseitig
Schreibe ein Programm, das beim Drücken eines Knopfes die Beschriftung eines Labels ändert. - Blockade
Ergänze das obige Programm so, dass das Drücken von Button2 auch das Drücken von Button1 blockiert.
Projekt: Ein erstes einfaches Computerspiel
- Schreibe ein einfaches „Computerspiel“, genaugenommen ein mittelalterliches mystisches „Adventure“ mit den Knöpfen „Kerker öffnen“, „Drachen köpfen“, „Schatzkiste öffnen“ und „Schatz mitnehmen“.
Diese Dinge müssen natürlich nacheinander gemacht werden, denn der Schatz ist verschlossen, die Schatzkiste ist vom Drachen bewacht, und der ist mitsamt der Schatzkiste im Kerker eingesperrt.
Wenn der Schatz dann mitgenommen ist, schreibe in ein Label: „Du bist jetzt REICH!!“ - Erweitere Dein Computerspiel und mache es komplizierter. Was kann man alles aus dem, was Du jetzt schon kannst, herausholen?
- Einführung
- Technisches
- Komponenten, Eigenschaften, Ereignisse
- Computer-Mathematik
- Verzweigungen
- Spielen mit dem Zufall
- Schleifen
- Computer-Graphik
- Geschachtelte Verzweigungen und Verzweigungen in Schleifen
- Prozeduren, Funktionen und Bibliotheken
- Felder (Arrays)
- Zeichen (Char) und Zeichenkette (String)
- Dateien
- Graphische Komponenten