Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi j-Taste abfangen? (https://www.delphipraxis.net/184560-j-taste-abfangen.html)

AlexII 6. Apr 2015 15:34

AW: j-Taste abfangen?
 
Zitat:

Zitat von hathor (Beitrag 1296356)
Die j-Taste hat den Scancode 74:

Delphi-Quellcode:
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=74 then Winapi.Windows.Beep(2000,50);
end;

Wo hast Du den Scancode her?

AlexII 6. Apr 2015 15:36

AW: j-Taste abfangen?
 
Zitat:

Zitat von milos (Beitrag 1296355)
Wie wäre es, wenn wir dir schon versuchen zu helfen, du dir wenigstens die antworten gründlich durchliest, damit unsere Zeit die wir für dich aufopfern nicht umsonst gewesen ist?

Verzeih, aber ich registriere das sehr wohl... habe gerade daran gebastelt. :thumb:

AlexII 6. Apr 2015 15:44

AW: j-Taste abfangen?
 
Ich hab's ... das macht es. :thumb:

Delphi-Quellcode:
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=74 then //...
end;

Vielen vielen dank an alle! Auch wenn ich nicht alles anwenden konnte, so habe ich mit eurer Hilfe viel gelernt. :thumb:

hathor 6. Apr 2015 15:45

AW: j-Taste abfangen?
 
Zitat:

Zitat von AlexII (Beitrag 1296358)
Wo hast Du den Scancode her?

https://de.wikipedia.org/wiki/Scancode

Zitat:
Um aber beim für den Vertrieb in vielen Ländern geplanten IBM PC nicht in jeder länderspezifischen Tastaturvariante andere Codes generieren zu müssen, wurde jeder Taste eine Nummer zugeordnet, der sog. Scancode. Dem Scancode wurde dann erst im Rechner vom Tastaturtreiber ein ASCII-Code zugeordnet. Für den Scancode wurden die Tasten einfach nach ihrer Lage auf der Tastatur reihenweise von links nach rechts durchnummeriert, im Gegensatz zum ASCII-Code, der der alphabetischen Anordnung folgt.

-----------------------
Kleine Änderung:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
Self.KeyPreview:= true;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
caption := IntToStr(Key); // so bekommt man den Scancode
if key=74 then Winapi.Windows.Beep(2000,50);
end;

himitsu 6. Apr 2015 16:19

AW: j-Taste abfangen?
 
Delphi-Quellcode:
Ord('J') = 74 = $4F
VK_xxx - Virtual-Keycode

Dejan Vu 6. Apr 2015 17:14

AW: j-Taste abfangen?
 
Ich frag nur vorsichtshalber: Scancode = (Virtual)KeyCode?

Ich meine ja, aber dann passt das nicht mit der Aussage, das die Tasten einfach durchnummeriert wurden.
Wenn 'J' die 74. Taste ist (was stimmen mag) und gleichzeitig (rein zufällig) Ord('J')=74 ist (was stimmt), dann müsste ja das 'A' (ord('A')=65) 9 Tasten links vom 'J' sein, was jetzt wiederum nicht ganz richtig ist.

himitsu 6. Apr 2015 17:49

AW: j-Taste abfangen?
 
Nein.

ScanCode ist der Code der Taste, (Z = Z und Y = Y)
KeyCode der Code nach übersetzung des KeyboardLayouts (z.B. Z und Y, je Sprache)
und Char, SysChar usw. ist es ganz am Ende, z.B. nach einem eventuellen IME.

Luckie 6. Apr 2015 19:08

AW: j-Taste abfangen?
 
Du willst keinen bestimmten Buchstaben abfangen, sondern die dritte Taste von Links in der zweiten Reihe. Oder wie?

Dejan Vu 6. Apr 2015 21:26

AW: j-Taste abfangen?
 
Zitat:

Zitat von himitsu (Beitrag 1296377)
ScanCode ist der Code der Taste, (Z = Z und Y = Y)
KeyCode der Code nach übersetzung des KeyboardLayouts (z.B. Z und Y, je Sprache)

Gut. Du vergleichst also den Scancode im OnKeyDown mit den VK_XXXX-Konstanten. Und VK bedeutet hier 'Virtual KEY-Code'.
Zitat:

Zitat von himitsu (Beitrag 1296369)
Delphi-Quellcode:
Ord('J') = 74 = $4F
VK_xxx - Virtual-Keycode

Ich bin verwirrt.

himitsu 6. Apr 2015 22:06

AW: j-Taste abfangen?
 
Aus MSDN-Library durchsuchenWM_KEYDOWN und WM_KEYUP kommt der Virtual-KeyCode als Key bei OnKeyDown und OnKeyUp an.

Und jetzt geh mal in deine Windows.pas, such nach den VK_-Codes und sieh dir den Kommentar bei Code 65 bis 90 an. :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 Uhr.
Seite 4 von 5   « Erste     234 5      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz