[gelöst] Key in OnKeyDown überschreiben

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
TheRealHades
Beiträge: 12
Registriert: So 10. Feb 2013, 13:01
OS, Lazarus, FPC: Windows 10 20H2 (L 2.2.2 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Ottendorf-Okrilla

[gelöst] Key in OnKeyDown überschreiben

Beitrag von TheRealHades »

Hallo,

ich versuche im OnKeyDown eines TEdit die Key-Variable zu überschreiben um ausschliessliche ausgewählte Tasten (in dem Fall Zahlen + BS + DEL) zuzulassen. Dies klappt auch. Was mir hingegen nicht gelingt ist das ändern von Kommas zu einem Punkt. Anbei meine Prozedur:

Code: Alles auswählen

procedure TfrmMain.Edit3KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case key of
      48..57: key:= key;         //Ziffern über Tastatur
      96..105: key:= key;        //Ziffern Nummernblock
      8, 37, 39, 46: key:= key;  //BS, DEL, Pfeil li + re
      110, 188, 190: key:= 190;  //Kommas zu Punkt wandeln
      else
        key:= 0;                 //alles andere unterdrücken
  end;
end;
Also sprich

Code: Alles auswählen

key:= 0;                 //alles andere unterdrücken
funktioniert und

Code: Alles auswählen

110, 188, 190: key:= 190;  //Kommas zu Punkt wandeln
 
funktioniert nicht, es werden einfach Kommas oder Punkt geschrieben, jenachdem was ich gedrückt habe.

Es wäre schön wenn mir jemand meinen Fehler aufzeigen könnte.

Vielen Dank
Björn
Zuletzt geändert von TheRealHades am Mi 24. Jul 2013, 09:27, insgesamt 1-mal geändert.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2805
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: Key in OnKeyDown überschreiben

Beitrag von m.fuchs »

Nimm mal stattdessen OnKeyPress:

Code: Alles auswählen

if not(Key in ['0'..'9', #8, '.']) then begin
  if Key = ',' then
    Key := '.'
  else
    Key := #0;
end;
hth
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

TheRealHades
Beiträge: 12
Registriert: So 10. Feb 2013, 13:01
OS, Lazarus, FPC: Windows 10 20H2 (L 2.2.2 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Ottendorf-Okrilla

Re: Key in OnKeyDown überschreiben

Beitrag von TheRealHades »

Hat funktioniert,

Vielen Dank.

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Key in OnKeyDown überschreiben

Beitrag von Socke »

m.fuchs hat geschrieben:Nimm mal stattdessen OnKeyPress:
Gegebenenfalls solltest du dir OnUTF8KeyPress() ansehen, ob noch andere Zeichen (bspw. Umlaute) eingegeben werden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten