Ereignis
Def.: Ein Ereignis ist ein Mechanismus, der einen Vorgang mit einem Programmtext verknüpft.
Das Ereignis weist einem Vorgang eine festgelegte Handlung zu. Tritt das Ereignis ein wird die Prozedur, die dem Ereignis zugewiesen ist, ausgeführt.
Ereignisse können entweder von Benutzer ausgelöst werden (z.B. OnClick). Diese Ereignisse stehen mit einem Element der Benutzeroberfläche in Zusammenhang. Oder sie können von Programmtext ausgelöst werden (z.B. OnActivate).
Die Prozedur, die die Reaktion auf das Ereignis definiert wird Ereignisbehandlungsroutine genannt. Hier unterscheidet man zwei Möglichkeiten:
Einfache Benachrichtigung
Die Routine regiert darauf, dass ein Ereignis statt gefunden hat. Sie weiß jedoch nur welche Art von Ereignis statt gefunden hat und für welche Komponente es eingetreten ist. (z.B. Klick-Ereignis auf eine Button)
Ereignisspezifische Behandlung
Die Routine stellt nicht nur fest dass ein Ereignis statt gefunden hat, sondern sie bekommt nähere Informationen über das Ereignis. Diese Informationen werden in Form von Variablen übergeben. In der Prozedur kann dann auf diese Werte reagiert werden.
Es ist auch möglich diese Informationen des Ereignis in der Prozedur zu ändern. So ist es z.B. möglich anstatt „a“ immer „1“ auszugeben
Die OnKey-Ereignisse:
Es gibt drei verschiedene Tastatur-Ereignisse:
OnKeyDown (Wenn die Taste(n) runter gedrückt wird/werden)
OnKeyPress (Solange die Taste(n) gedrückt gehalten wird/werden)
OnKeyUp (Wenn die Taste(n) losgelassen wird/werden)
Es gibt jedoch Unterschiede in der Anwendung der Ereignisse:
OnKeyDown und OnKeyUp geben die gedrückten Tasten in Form von „ASCII-Code“ bzw. „Virtuelle Tastencodes“ in der Variablen key aus. Sie unterscheiden nicht zwischen großen und kleinen Buchstaben. In der Variablen „shift“ geben sie an ob die Tasten Alt, Strg oder Shift gedrückt sind.
OnKeyPress gibt die gedrückte Taste in Form eines großen oder kleinen Buchstaben wieder. Es gibt Buchstaben Zahlen und Zeichen wie sie auf der Tastatur abgebildet sind wieder. Tasten wie Alt, Strg, Pfeiltasten, Entf... werden nicht erkannt. Mit # + ASCII-Code Lassen sich Tasten wie Enter(#13) oder Löschen (#8) abfragen.
Um den Wert für eine bestimmte Taste heraus zu finden schreibt man ShowMessage(VarToStr(Key));
In eine OnKey-Prozedur
Die Ereignisse werden von der Schaltfläche empfangen, die den Fokus besitzen. Setzt man die Eigenschaft KeyPreview des Formulars, auf True, empfängt das Formular das Ereignis bevor der fokussierten Schaltfläche.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if key = vk_down then image1.Top:= image1.Top+2; if (key = 40) and (Shift = [ssShift]) then image1.Top:= image1.Top+4; end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if key = 'a' then Image1.Top:=Image1.Top-2; if key = 'A' then Image1.Top:=Image1.Top-4; end;
Maus:
Wir kennen bisher das Mausereignis OnClick. Es wird jedoch nur aktiviert, wenn der Benutzer auf ein bestimmtes Objekt klickt.
Die Ereignisse OnMouseDown und OnMouseUp werden aktiviert wenn der Benutzer irgendwo auf das Formular klickt. Über die Variablen „X“ und „Y“ wird die Position des Mauszeiger angegeben. Außerdem gibt die Variable „Shift“ an, welche Maustaste betätigt wird, ob es sich um einen Doppelklick handelt und ob Strg, Alt oder Shift gedrückt wird.
OnMouseMove wird ausgeführt, wenn sich die Maus bewegt. Hier wird mit den Variablen X Y und Shift das gleiche angegeben wie bei OnMouseDown.
procedure TForm1.Turtle1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin If Shift=[ssleft] then Turtle1.MoveXY(x,y); end;
OnMouseWheel, OnMouseWheelUp und OnMouseWheelDown sind Ereignisse die auf Bewegungen des Mausrad reagieren. OnMouseWheel gibt dabei die Bewegungsrichtung durch einen positiven bzw. negativen Wert, der Variablen „WheelDelta“, an.
OnMouseWheelUp und OnMouseWheelDown reagieren nur auf je eine Bewegungsrichtung.
In den untenstehenden Bildern, findet ihr 3 Tabellen für ASCII&VK_ -Codes