Einzelnen Beitrag anzeigen

looseleaf

Registriert seit: 25. Mai 2011
58 Beiträge
 
#1

OnShortcut, TWMKey und Umlaute (und Cursortasten)

  Alt 11. Jan 2024, 14:32
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:
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;
So weit so gut. Leider versagt es bei Umlauten (und sauber ist es bei Cursortasten auch nicht): Ein Ü zum Beispiel wird mir als '°' geliefert.
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

Geändert von TBx (12. Jan 2024 um 07:24 Uhr) Grund: Code-Tags durch Delphi-Tags ersetzt
  Mit Zitat antworten Zitat