Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: TextToShortCut fehlerhafter Key

  Alt 4. Apr 2020, 13:56
Ja, bei mir kommt auch 111 aka VK_DIVIDE raus, aber nach ShortCutToText kommt auch wieder Umsch+- raus,
selbst wenn ich die Konvertierung ohne das Shift mach, also nur '-'.

Der erste Teil (Alt/Ctrl/Shift) wird mit der Sprache übersetzt, mit welcher dein Programm kompiliert wurde.
(oder, wenn du mit Packages arbeites, dann auch der Systemsprache, falls eine passende Sprachdatei der RTL/VCL-BPLs mitgeliefert wurde)

Aber die restlichen Zeichen sind "binär" hart kodiert.
Früher, in den alten Delphis mit ANSI, da hängt es von der Systemsprache ab, aber im Unicode sollte es da keine Probleme mehr geben.
Welche Delphi-Version nutzt du? (vor Delphi 2009 war es ANSI)


Das Tastaturlayout hat nur Einfluss auf die Umrechnung von ScanCode der Tastatur zum VirtualKeyCode.
Und die VirtualKeyCodes sind überall gleich, womit dann die ShortCut-Funktionen arbeiten.
Aber ja wenn das Tastaturlayout im Windows nicht zu Tastatur passt, dann kommt natürlich im Windows/Programm nicht das an, was aufgedruckt wurde.



[EDIT]
ShortCutToText geht doch über den ScanCode (VCL.Menus.GetSpecialName > MSDN-Library durchsuchenMapVirtualKey und MSDN-Library durchsuchenGetKeyNameText), womit doch das Tastaturlayout einen Einfluß hat,
aber obwohl das Layout bei mir stimmt, ebenso das falsche Ergebnis, allerdings nur aus Richtung der Tastatur.
VK zu SC und Zurück müsste "eigentlich" stimmen, selbst mit dem falschen Layout, so lange das Zeichen irgendwo auf der Tastatur drauf ist.

Im US-Layout steht da unten /? wo bei uns -_ liegt.
http://kbd-intl.narod.ru/english/


Ich hab auch keine Ahnung, warum die Entwickler hier über den ScanCode gehn, anstatt direkt in ein Char umzuwandeln, mit MapVirtualKey+MAPVK_VK_TO_CHAR,
wobei dort dann aus 111 korrekt ein '/' wird, anstatt dem falschen '-' aus MapVirtualKey+GetKeyNameText. (umgekehrt sollte es dann wohl auch passen)
$2B or not $2B

Geändert von himitsu ( 4. Apr 2020 um 14:39 Uhr)
  Mit Zitat antworten Zitat