AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein OnShortcut, TWMKey und Umlaute (und Cursortasten)
Thema durchsuchen
Ansicht
Themen-Optionen

OnShortcut, TWMKey und Umlaute (und Cursortasten)

Ein Thema von looseleaf · begonnen am 11. Jan 2024 · letzter Beitrag vom 18. Jan 2024
Antwort Antwort
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
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#2

AW: OnShortcut, TWMKey und Umlaute (und Cursortasten)

  Alt 12. Jan 2024, 02:01
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;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
looseleaf

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

AW: OnShortcut, TWMKey und Umlaute (und Cursortasten)

  Alt 18. Jan 2024, 10:06
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.
  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 09:28 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