Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Key Problem: ssCtrl und key


J.Borchert - Do 30.06.05 11:00
Titel: Key Problem: ssCtrl und key
Habe einfach Scheuklappen, wie lese ich Tastenkombis?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.sg1KeyDown(Sender: TObject; var Key: Word; // StringGrids Ereignis
  Shift: TShiftState); var i:integer; // virtuelle Tastencodes
  f:file;
begin if Key = vk_RETURN then begin BeiEnterAufCol1; Key := 0end;
      if Key = vk_F3 then rechne(sg1);
      if Key = vk_F6 then begin Sortiere(sg1);Hilfe('Tabelle ist aufsteigend');end;
      if (ssCtrl  in Shift)and(key = vk_Left) then AlleNachLinks;
      if (ssCtrl  in Shift)and(key = vk_Right) then AlleNachRechts;
      if (ssAlt  in Shift)and(key = vk_Next ) then WertNachUnten;// Problem 1
      if (ssCtrl  in Shift)and(key = ord('e') ) then EditModus; // Problem 2
end;


Also zu Problem 1: Die normale Funktion "Seite runter" im StringGrid (sg1) wird auch ausgeführt (soll nicht)
zu Problem 2: ord('e') scheint nicht zu funktionieren, wenn ich Key ausgebe, ist Key=17 warum ?
( würde gern auf die Tastenkombi Strg+e reagieren )

mfG Jürgen


jaenicke - Do 30.06.05 11:09

Zu deinem Problem 1: Einfach

Delphi-Quelltext
1:
Key := 0;                    

nach deinem Code hinschreiben, wenn das nicht weiter behandelt werden soll.

Zu dem anderen Problem: Wie wärs mit THotKey?

Soll der Hotkey global im System sein, nimm folgenden Code:
http://www.swissdelphicenter.ch/de/showcode.php?id=2375

Und außerdem gibts in der JEDI Sammlung TJvApplicationHotKey oder so ähnlich, das gilt dann nur für deine Anwendung...


J.Borchert - Do 30.06.05 11:23

Strg+e soll nur beim Bearbeiten des StringGrids eine Funktion ausführen.

Zitat:

Die meisten virtuellen Tastencodes sind in der Unit Windows definiert. Weitere Tastencodes sind in speziellen Windows-Wrappern (z. B. Unit imm) definiert. Verwenden Sie bei alphabetischen Tasten ord zusammen mit einem Großbuchstaben, wie beispielsweise ord( 'M' ).

Mit der Methode Ord kann ein virtueller Tastencode für einen alphanumerischen Wert erzeugt werden. Ord(‘7’) liefert beispielsweise den virtuellen Tastencode für die Ziffer 7.


So stehts in der Online-Hilfe unter virtuelle Tastencodes aber mein ord funktioniert trotzdem nicht.

Problem 1 ist gelöst, danke.

mfG Jürgen


J.Borchert - Do 30.06.05 11:26

Habe selbst gelesen und gelöst: das ord('e') funzt nur wenn ord('E') ist.

Danke mfG Jürgen


jaenicke - Do 30.06.05 11:32

Hinweis:
Ord('E') = Ord('e') - Ord('a') + Ord('A') = Ord('e') - 32

Grund:
Ord('A') = 65
Ord('a') = 97
Und von da wird jeweils hochgezählt...