Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   AltGr-A in einem Eingabefeld TdxBarEdit (https://www.delphipraxis.net/155318-altgr-einem-eingabefeld-tdxbaredit.html)

cramer 18. Okt 2010 13:27

AltGr-A in einem Eingabefeld TdxBarEdit
 
Ich möchte, wenn der Focus auf dem Eingabefeld "Suchen" liegt und dort AltGr-A getippt wird, eine Suche nach einer Adresse starten.
Ich bekomme zwar AltGr mit, nicht aber die folgende Taste z.B. das "A" bei gedrückter AltGr Taste.
So siehts in etwa aus:
Delphi-Quellcode:
procedure TWV.SuchenKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  busy;
  MyDebug('SuchenKeyDown = ' + intToStr(key));
  if (ssCtrl in Shift) then MyDebug('SuchenKeyDown = Ctrl');
  if (ssAlt in Shift) then MyDebug('SuchenKeyDown = Alt');
  if GetAsyncKeyState(VK_RMENU) < 0 then MyDebug('SuchenKeyDown = AltGr');

  if (GetAsyncKeyState(VK_RMENU) < 0) and (key > 31) then begin
    MyDebug('SuchenKeyDown AltGr-' + chr(key) + ' = ' + intToStr(key));
    if Key = ord('A') then begin
      Key := 0;
      SuchenAdresseClick(Sender);
    end;
  end;
  idle;
end;
Wie man sieht, kein a
[732] myDebug SuchenKeyDown = 17
[732] myDebug SuchenKeyDown = Ctrl
[732] myDebug SuchenKeyDown = AltGr

Was kann man tun?
Gruß Uwe

Bummi 18. Okt 2010 14:06

AW: AltGr-A in einem Eingabefeld TdxBarEdit
 
Delphi-Quellcode:
if (Key = ord('A')) and (ssctrl in shift) and (ssAlt in Shift) then .....

shmia 18. Okt 2010 14:28

AW: AltGr-A in einem Eingabefeld TdxBarEdit
 
Warum nimmst du nicht eine ActionList, erzeugst eine neue Action und setzt den Shortcut auf Strg+Alt+A?
Dazu braucht es doch keinen komplizierten Code, den du in einigen Monaten eh nicht mehr verstehst.

cramer 21. Okt 2010 09:53

AW: AltGr-A in einem Eingabefeld TdxBarEdit
 
Schon mal Danke für die Tips.
zu Tip 1.
Wenn ich bei Key eine 17 (myDebug SuchenKeyDown = 17) zurückbekomme,
Delphi-Quellcode:
MyDebug('SuchenKeyDown = ' + intToStr(key));
.
wird ein Vergleich
Delphi-Quellcode:
if (Key = ord('A')) ...
.
wohl auch nichts bringen, weil IMO das A = chr(65) ist.

zu Tip 2.
Das mit der Action werde ich mir merken, guter Tip.
Aber Strg-Alt+A ist schon als Hotkey im Menü definiert und funktioniert auch überall im Formular.
Nur wenn das Eingabefeld "Suchen" den Focus hat, leider nicht.
Es sieht so aus, als würde es schon vorher in der Komponente abgefangen, vielleicht für Strg-A "alles markieren" o.ä.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 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