[gelöst] FormKeyPress

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
mulcheo
Beiträge: 57
Registriert: Do 1. Aug 2013, 15:11

[gelöst] FormKeyPress

Beitrag von mulcheo »

Hallo,
nach einem kleinen Proberun mit Keypress bin ich schwer verwirrt und fürchte, dass da noch große Defizite beim Verständnis mit OOP und Lazarus vorliegen, Folgendes:

Ich habe eine Form1 mit einem Label in der Mitte und möchte über w-a-s-d die Position verändern

Code: Alles auswählen

procedure TForm1.Formkeypress(Sender: Tobject; var Key:char);
begin
  if key='w' then Label1.Top:=Label1.Top-1;
  if key='s' then Label1.Top:=Label1.Top+1;
end;
Aus irgendeinem Grund funktionieren übrigens 'inc' und 'dec' bei mir nicht, aber DAS ist ja noch garnicht mein Problem...
Was mich hingegen fertig macht, ist die Tatsache, dass die gesamte Abfrage nicht mehr hinhaut, sobald ich auf meiner Form einen Button platziere - ganz unabhängig davon, ob ich hierfür irgendwelche Events usw. festlege, oder nicht. Allein die Tatsache, dass die Form1 auch einen Button enthält, hebelt meine procedure TForm1.Formkeypress anscheinend aus.

nun habe ich zwei Fragen:
a) wie ist das zu erklären (bitte auf dummy-niveau, also wo hängt das Programm jetzt? Kann es sein, dass er nun quasi in einer Wird-der-Button-gedrückt?-Routine verharrt und darum blind für mein Keypress geworden ist? Oder woran liegt es?)
b) wie bringe ich das Prog. dazu, die Eingabe wieder anzunehmen.

schonmal vielen Dank, Jungs, ich weiß, dass es hier ne einfache Erklärung für gibt - aber ich versteh's grad echt nicht...
Zuletzt geändert von mulcheo am Do 8. Aug 2013, 16:36, insgesamt 1-mal geändert.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2816
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Verwirrung meinerseits über FormKeyPress

Beitrag von m.fuchs »

mulcheo hat geschrieben:

Code: Alles auswählen

procedure TForm1.Formkeypress(Sender: Tobject; var Key:char);
begin
  if key='w' then Label1.Top:=Label1.Top-1;
  if key='s' then Label1.Top:=Label1.Top+1;
end;
Aus irgendeinem Grund funktionieren übrigens 'inc' und 'dec' bei mir nicht, aber DAS ist ja noch garnicht mein Problem...
Beantworte ich dir trotzdem: Inc und Dec können nicht auf Properties angewendet werden.
mulcheo hat geschrieben:Was mich hingegen fertig macht, ist die Tatsache, dass die gesamte Abfrage nicht mehr hinhaut, sobald ich auf meiner Form einen Button platziere - ganz unabhängig davon, ob ich hierfür irgendwelche Events usw. festlege, oder nicht. Allein die Tatsache, dass die Form1 auch einen Button enthält, hebelt meine procedure TForm1.Formkeypress anscheinend aus.
Wenn ein Button drauf ist, hat der den Fokus. Und fängt damit alle Tastendrücke ab.
Wenn du die Eigenschaft KeyPreview des Forms auf True setzt, schauen die Tasten erst einmal beim Form vorbei bevor sie zum Button gehen. Dann sollte alles wieder so sein wie du es haben möchtest.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten