Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi VirtualKeys to Char (https://www.delphipraxis.net/44137-virtualkeys-char.html)

Gruber_Hans_12345 14. Apr 2005 09:53


VirtualKeys to Char
 
gibt es eine Funktion mit der ich aus den Parameter eines OnKeyDown (Key und Shiftstate) den dazugehörigen char rausfinde.
Ich kann leider nicht die OnKeyPress Funktion verwenden.

Binärbaum 14. Apr 2005 09:58

Re: VirtualKeys to Char
 
Solange es nur alphanumerische zeichen/ Tasten sind, sollte es mit Delphi-Referenz durchsuchenChr gehen.

MfG
Binärbaum

Robert Marquardt 14. Apr 2005 10:01

Re: VirtualKeys to Char
 
Schlag mal die Win32 Funktion MapVirtualKey nach.

Gruber_Hans_12345 14. Apr 2005 10:17

Re: VirtualKeys to Char
 
Nein, sind nicht nur alphanumnerische Zeichen sonder auch Sonderzeichen.

macht MapVirtualKey nicht was anderes (Scan Code to Virtual Code) ich brauche aber VirtualCode to Char oder ?

Robert Marquardt 14. Apr 2005 10:59

Re: VirtualKeys to Char
 
VK_ fuer ASCII-Zeichen sind die ASCII-Zeichen selbst.

Gruber_Hans_12345 14. Apr 2005 11:08

Re: VirtualKeys to Char
 
Zitat:

Zitat von Robert Marquardt
VK_ fuer ASCII-Zeichen sind die ASCII-Zeichen selbst.

Aber ich brauche das umgekehrte VK -> Char und da habe ich Probleme mit den Tasten auf dem Nummernblock, mit großen / kleinen Buchstaben ....
Ich kann natürlich alles selbst abfragen und abfangen, nur dachte ich mir, da gibt es sicher eine Funktion, der ich einen VK_Key oder Scan Key, den aktuellen Shift Status gebe und ich dann das Zeichen bekomme, das es darstellen soll.

Robert Marquardt 14. Apr 2005 11:47

Re: VirtualKeys to Char
 
Wenn du z. B. Pos1 drueckst, so gibt es dafuer nur den VK_ Code. Einen Char gibt es dazu nicht.
Falls du die Beschriftung der Taste meinst, so ist diese ueber GetKeyNameText erhaeltlich.

Gruber_Hans_12345 14. Apr 2005 12:09

Re: VirtualKeys to Char
 
hmm, ich möchte die selben Parameter wie die im OnKeyPress Event.

d.h. wenn ich Shift + A -> "A"
bei A -> "a"
bei Numpad * -> "*"
bei Shift + Numpad * -> "*"
bei + -> "+"
bei Shift + "+" -> "*"

wenn sonstige nicht ASCII Tasten gedrückt werden, dann möchte ich #0 zurückbekommen (oder sonst was, was nicht anzeigbar ist)

... habe gerade die Funktion toAscii gefunden, laut API Hilfe sieht die so aus als ob die das macht, was ich möchte, mal schaun ob's funktioniert.

Gruber_Hans_12345 14. Apr 2005 12:14

Re: VirtualKeys to Char
 
Juhu, funktioniert .....

Falls mal wer sowas ähnliches braucht .....
Delphi-Quellcode:
var tempC      : array [1..2] of Char;
    keystate   : TKeyboardState;
begin
    GetKeyboardState(keystate);

    if ToAscii(Key, MapVirtualKey(key, 0), keyState, @tempC[1], 0) > 0 then begin

        Edit3.Text := Edit3.Text + tempC[1];
    end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:12 Uhr.

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-2025 by Thomas Breitkreuz