OnKeyDown und Alt-Taste

Rund um die LCL und andere Komponenten
Antworten
Mathias
Beiträge: 6914
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

OnKeyDown und Alt-Taste

Beitrag von Mathias »

Wieso hat die Alt-Taste so ein merkwürdiges Verhalten ?
OnKeyDown, wird nur bei jeden 2. mal drücken der Alt-Taste ausgelöst. Der Key-Code für alt ist 18. OnKeyUp geht.
Die 17 ist die Ctrl-Taste, welche einwandfrei geht.

Code: Alles auswählen

procedure TForm1.FormKeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
begin
  Writeln(Key);
end;
 
procedure TForm1.FormKeyUp(Sender: TObject; var Key: word; Shift: TShiftState);
begin
  Writeln('-', Key);
end;      
Ausgabe:

Code: Alles auswählen

17
-17
17
-17
17
-17
17
-17
18
-18
-18
18
-18
-18
18
-18
-18
18
-18
-18
18
-18
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2809
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: OnKeyDown und Alt-Taste

Beitrag von m.fuchs »

Setz doch mal am Ende der KeyDown-Methode den Wert des Keys auf 0. Sonst wird das ALT an das Programm weitergeleitet und das führt zu deinem Problem.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Mathias
Beiträge: 6914
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: OnKeyDown und Alt-Taste

Beitrag von Mathias »

Danke, jetzt geht es.

Ich habe noch festgestellt, das die Alt-Taste das System-Menü öffnet. Ist wohl noch ein Überbleibsel von Win 3.1.

Dafür geht jetzt Alt+F4 nicht mehr. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2809
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: OnKeyDown und Alt-Taste

Beitrag von m.fuchs »

Dann mach das doch nur, wenn nur die ALT-Taste gedrückt wird:

Code: Alles auswählen

if Key = VK_MENU then Key := 0;
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten