Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Eingabe von "ß" "ä" und "<" über vitu (https://www.delphipraxis.net/106880-eingabe-von-ss-ae-und-ueber-vitu.html)

Spawni_0815 18. Jan 2008 01:24


Eingabe von "ß" "ä" und "<"
 
Hallo erst mal ...

hätte ne kurze Frage ... ich hab grad n Programm in dem ich die Eingaben nach folgendem Prinzip erfasst ...

Hier mal der Code (Delphi 6 Personal)
Delphi-Quellcode:
procedure TQuiz.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin

{if key = VK_F1 then ...
Jetzt möchte ich für der Programm auch die Tasten "ß", "ä" und "<" nutzen ... jedoch weiss ich die VK_ aliase dafür nicht ...

Oder gibt es vielleicht sonst eine Möglichkeit die Eingaben auf diese Weise zu erfassen ohne VK_ zu benutzen ?

Möchte hald irgendwie mit dem oben beschriebenen "System" die Tastendrücke der Tasten "ß", "ä" und "<" zusätzlich mit einbauen.

Muss ja irgendwie gehen oder ? Man muss doch eigentlich jedes Taste die es auf der Tastatur gibt auch verwenden können ...

Vielen Dank für die Hilfe schon mal

mfg

Spawni

himitsu 18. Jan 2008 02:34

Re: Eingabe von "ß" "ä" und "<&a
 
einfach mal selber testen, was da ankommt, wenn du was drückst :zwinker:

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Memo1.Lines.Add(Format('%d %d', [Key, Byte(Shift)]));
end;
Delphi-Quellcode:
//also bei minem Tastaturlayout und was sonst noch darauf Einfluß hat

if (Key = 219) and (Shift = []) then {ß}
if (Key = 222) and (Shift = []) then {ä}
if (Key = 226) and (Shift = []) then {<}

OnKeyDown dürfte auch nur eine Weiterleitung von WM_KEYDOWN sein.
schau dir mal Folgendes an (siehe MSDN)
Zitat:

WM_KEYFIRST WM_KEYDOWN WM_KEYUP WM_CHAR WM_DEADCHAR WM_SYSKEYDOWN WM_SYSKEYUP WM_SYSCHAR WM_SYSDEADCHAR WM_KEYLAST

Spawni_0815 18. Jan 2008 07:36

Re: Eingabe von "ß" "ä" und "<&a
 
Vielen Dank für die schnelle Antwort ... funktioniert super so ...

Wo bekommt man denn die "Zahlenwerte" der einzelnen Tasten her ? Gibts da irgendwo ne Tabelle von dem Zeichensatz der da verwendet wird wo man die Werte rauslesen kann ?

Weil die ASCII-Werte der Zeichen scheinen es ja net zu sein ... die hab ich gestern ja schon versucht und in der ASCII-Tabelle stehen bei den entsprechenden Dezimalwerten ganz andere Zeichen ...

Das mit der Tabelle ist nur rein Interessehalber ... was ich erreichen wollte funktioniert ja jetzt ... ;)

Vielen Dank nochmal ...

Spawni_0815 18. Jan 2008 07:56

Re: Eingabe von "ß" "ä" und "<&a
 
Ok, hat sich erledigt ^^ ... sollte mal mein Hirn einschalten am Morgen :wall: :wall: :wall:

Hab das ganze nochmal gründlich durchdacht und bin jetzt drauf gekommen das man sich mit nur n paar Zeilen Code n Programm bauen kann das einem die für Delphi nötigen Dezimalwerte jeder einzelnen Taste beim drücken anzeigen kann.

DGL-luke 18. Jan 2008 08:03

Re: Eingabe von "ß" "ä" etc.
 
virtual keys sind direkt die codes, die von der tastatur kommen. der code von himitsu wird auf anderen keyboard-layouts wohl nicht funktionieren!

Wenn du Delphi 2005 oder höher hast, solltest du Delphi-Referenz durchsuchenVirtual-Key Codes finden, ansonsten hier: MSDN-Library durchsuchenVirtual-Key Codes

Irgendwie sollte die WinAPI diese Keystates aber auf ASCII (bzw. den OEM-Zeichensatz) mappen können, da gibts sicher Funktionen.

Reinhard Kern 18. Jan 2008 08:14

Re: Eingabe von "ß" "ä" und "<&q
 
Hallo,

es gibt zwar VK_A, aber nicht VK_Ä oder VK_AE, man bräuchte ja bei weltweitem Einsatz ungeheuer viele solche Codes. Unter Windows werden die nationalen Sondertasten mit VK_OEMx kodiert, die Zuordnung hängt aber vom aktuellen Tastaturtreiber ab. Zur Umsetzung gibt es die Funktion VkKeyScan, d.h. VkKeyScan ('Ä') liefert den zugehörigen VK_ Code.

Gruss Reinhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:06 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