Liste der Tastennamen
hi Leute ich hätt mal gern gewusst wie die einzelnen Tasten auf der Tastatur in Delphi heißen!
Ich was nur das #0 nix ist. Spider |
Re: Liste der Tastennamen
Hier mal ein Aufruf aus einer meiner Komponenten.
GetKeyNameText(VCode shl 16, Buffer, SizeOf(Buffer)); Dies ist eine Win32-Funktion die zum virtuellen Tastencode den lokalisierten Namen liefert. Denk daran es Kleinbuchstaben usw dabei nicht gibt. Es ist der Name der physischen Taste. Die Funktion ist in einer laenderspezifischen DLL von Windows implementiert. Ich habe bemerkt das die Win98-Implementation besser als die Win 2000-Implementation ist. Win 98 liefert korrekt 'Ü', waehrend Win 2000 'ü' liefert. eines der vielen Zeichen das Win 2000 schlampig implementiert wurde. |
Re: Liste der Tastennamen
Nene das mein ich nicht!
Es gibt bestimmt ne Liste(oder vielleicht schreibt sie einer)
Delphi-Quellcode:
Spider
#0 = ''
#1 = '1'//Stimmt bestimmt nicht aber so mein ich das |
Re: Liste der Tastennamen
Doch das meinst du :-)
Andere Tastennamen gibt es nicht. Die Liste kannst du dir ja selber erstellen. Die Funktion kennst du ja jetzt. Falls du die Namne der ASCII-Zeichen meinst, das ist etwas voellig anderes. |
Re: Liste der Tastennamen
Hi Spider,
Virtual Keycodes und Virtual Keycodes! Das dürfte das sein, was du suchst. Ansonsten habe ich dich falsch verstanden. Chris PS: Die Funktion von Robert ist aber identisch, nur das die VKs Konstante sind. |
Re: Liste der Tastennamen
ORD() kannst du die Konstante umwandeln.
Du kannst du auch in der Online-Hilfe danach suchen, gleiche Suchbegriffe... |
Re: Liste der Tastennamen
THX @Chakotay1308
@all wie rufe ich nun die Tasten auf???
Delphi-Quellcode:
???
if VK_A then
... Spider |
Re: Liste der Tastennamen
Zitat:
Die meisten Events, die bei Tastendruck aufgerufen werden (z.B. OnKeyPress) liefern den Parameter Key mit. Du kannst dann mit if key = VK... abfragen welche Taste gedrückt wurde. |
Re: Liste der Tastennamen
@Phoenix
Das ist genau das was ich gesucht hab!
Delphi-Quellcode:
if Key = VK_A then
//mach was Spider |
Re: Liste der Tastennamen
So langsam verstehe ich endlich die Frage (die Signatur hilft).
Von Windows kommen "virtuelle" Tastencodes. Das bedeutet das die Tastencodes sprachunabhaengig sind und die gedrueckte Taste bedeuten. Es gibt also kein 'a' sondern nur ein 'A', da es ja keine Taste fuer ein kleines A gibt. WM_KEYDOWN uebermittelt so einen Tastencode. Wenn dein Programm intern TranslateMessages aufruft, so werden die WM_KEYDOWNs und WM_KEYUPs interpretiert und WM_CHAR generiert. Dort ist dann ein Buchstabe vorhanden. Die virtuellen Tastencodes sind in Windows.pas mit dem Praefix VK_ als Konstanten vorhanden. Fuer die einfachen Tasten wie A, B, C etc gibt es keine Konstanten, da der Wert dem ASCII-Zeichen entspricht. Ein (nicht vorhandenes) VK_A hat also den Wert Ord('A'). if Code = VK_UP then fragt also ob die Pfeil-nach-oben-Taste gedrueckt wurde. Deine urspruengliche Frage wollte den Namen der Taste wissen. Das ist aber etwas ganz anderes. Was du wissen wolltest ist der Wert der Taste. |
Re: Liste der Tastennamen
Delphi-Quellcode:
[Fehler] VirtuPC.pas(111): Undefinierter Bezeichner: 'VK_A'
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin if Key = VK_A then showmessage ('Du hast "A" gedrückt!'); end; Was nu??? |
Re: Liste der Tastennamen
if Key = Ord('A') then
Wie bereits erwaehnt gibt es fuer die einfachen ASCII-Zeichen keine Konstanten, da die virtuellen Tastencodes genau den Wert des ASCII-Zeichens haben. if Key = Ord('a') then wird NICHT funktionieren! |
Re: Liste der Tastennamen
|
Re: Liste der Tastennamen
Ja schön!
Wie GEHT DAS nun???? Es soll einfach eine Meldung kommen wenn ich auf der TATATUR auf A gedrückt habe |
Re: Liste der Tastennamen
Hi,
also stell dich bitte nicht so an! :evil: So schwer ist es nicht. Du fragst einfach ab, ob Key nun z.B. Ord('A') (A-Taste) ist, und reagierst entsprechend. Wenn dein Problem ist, WO du das ganze hincoden musst, dann formuliere deine Fragen bitte auch entsprechend! Versuch mal die Eigenschaft KeyPreview des Formulars auf true zu setzen und dann im OnKeyDown die Tasten abzufangen! Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz