AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TextToShortCut fehlerhafter Key

Ein Thema von SevenValues · begonnen am 4. Apr 2020 · letzter Beitrag vom 4. Apr 2020
Antwort Antwort
SevenValues

Registriert seit: 5. Sep 2005
6 Beiträge
 
#1

TextToShortCut fehlerhafter Key

  Alt 4. Apr 2020, 01:19
Hallo.

Ich bekomme ständig bei
Delphi-Quellcode:
   SC:=VCL.Menus.TextToShortCut('Umsch+-');
   VCL.Menus.ShortCutToKey(SC,Key,Shift);
als Key die 111 zurück (also das '/' auf der Zehnertastatur statt des Underscore '_').
Eigentlich sollte da
   ShortCutToKey(SC,#189,[ssShift]); drin stehen.
Ist es möglich, dass ich noch vorher ein Tastaturlayout angeben muss?
Glaub ich eigentlich nicht, weil die Umlaute alle korrekt sind. Nur dieses '-' macht Probleme.
Die 111 ist übrigens nichtmal das '-' auf dem Zehnerblock, sondern das '/'. Ist für mich aber erstmal unerheblich.

Vielleicht gibt es aber auch eine elegantere Lösung für die zwei Codezeilen, die dabei gleich noch das Problem löst? Arbeite das erste Mal mit TextToShortCut & ShortCutToKey.

Würde mich über Lösungsansätze freuen.

LG
7

PS: Im Übrigen ist der Code oben nur zur Veranschaulichung, bevor wieder einer fragt, was das soll. Ich speichere ShortCuts als Makro und arbeite die bei Tastendruck an einem externen Gerät nacheinander ab. Funktioniert auch. Nur eben die Verwechslung nicht. Alles Andere geht!

Geändert von SevenValues ( 4. Apr 2020 um 01:24 Uhr)
  Mit Zitat antworten Zitat
Alt 4. Apr 2020, 01:52     Erstellt von Luckie
Dieser Beitrag wurde von Luckie gelöscht. - Grund: War Unsinn.Verguckt.
Benutzerbild von himitsu
himitsu

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

AW: TextToShortCut fehlerhafter Key

  Alt 4. Apr 2020, 12: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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:12 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