![]() |
OnShortcut, TWMKey und Umlaute (und Cursortasten)
Ich grüße euch!
Wir versuchen gerade, in einem DBGrid mit der Eingabe eines Anfangsbuchstabens zur nächsten passenden Zeile zu springen, auch wenn Standardshortcuts am Formular vorhanden sind (zB Schli&eßen am Close Button). Im Form ein OnShortcut implementiert:
Delphi-Quellcode:
So weit so gut. Leider versagt es bei Umlauten (und sauber ist es bei Cursortasten auch nicht): Ein Ü zum Beispiel wird mir als '°' geliefert.
procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
var Key: Char; begin if ActiveControl = DBGrid then begin if (HiWord(Msg.KeyData) and KF_ALTDOWN = 0) then begin Key := Chr(Msg.CharCode); if IsLetter(Key) then begin DBGridKeyPress(self, Key); Handled := true; end; end; end; end; Wie macht man sowas sauber? Cursortasten sind in dem Fall kein Problem, weil die CharCodes 37,38,39,40 ohnehin keine Buchstaben sind und das in dem Fall funktioniert, aber wie würde ich unterscheiden, ob es ein &, (, ' ist oder die "zugehörigen" Cursortasten? Und was mache ich mit Umlauten? Danke fürs Augenöffnen Stefan |
AW: OnShortcut, TWMKey und Umlaute (und Cursortasten)
Wie ist den IsLetter definiert?
Tipps: Setze einen BreakPoint auf die erste Zeile und schau welche Werte Key hat, wenn du einen der Umlaute drückst. Wenn Key als Char definiert ist würde ich Key := Char(Msg.CharCode) verwenden, nicht Chr; |
AW: OnShortcut, TWMKey und Umlaute (und Cursortasten)
Das Problem ist, dass hier als Code 222 kommt (oder ein ähnlicher), der dann je nachdem zu interpretieren ist. Wir haben jetzt die Umlaute einfach mal ignoriert.
Aber danke für die Rückmeldung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 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