Tech-Ecke / Delphi Inhalt / HotKeyManager

 

     HotKeyManager

 

Ja, HotKey's lassen sich in Delphi auch so recht einfach umsetzen (TMain- und TPupUpMenu), jedoch reagiert die Anwendung nur dann auf die entsprechenden Tasten, wenn die Anwendung auch aktiv ist, bzw. als als ForegroundWindow läuft. Mit dem HotKeyManager von Troels Jakobsen ist es möglich eine Reaktion auf HotKey's zu ermöglichen, auch wenn die Anwendung inaktiv im Hindergrund läuft.    

    Download HotKeyManager 1.7.1 von Troels Jakobsen

   Installation

Siehe Installieren von Komponenten.

   Handhabung

Die Komponente muss, wie jede andere auch zunächst mal auf die entsprechende Form gezogen werden. Die abzufragende Tastenkombination (Hotkey) selbst werden dann ausschließlich währende der Laufzeit gesetzt und dies kann z.B. so aussehen:

 

Setzen eines HotKey:  – benötigt HotKeyManager in uses!

 

var
      
HotKey1, HotKey2: Word; // als Globale Variable deklarieren

HotKey1 := HotKeyManager1.AddHotKey(TextToHotKey('CTRL+A',true));   // CTRL+A...Z oder ALT+A...Z oder PRINT, ESCAPE... 0
HotKey2 := HotKeyManager1.AddHotKey(TextToHotKey('CTRL+B',true));

 

Möchte man prüfen ob die Tastenkombination ungültig bzw. bereits belegt ist:

   if HotKeyManager1.AddHotKey(TextToHotKey('CTRL+A',true)) = 0 then   // hier z.B. steht die Tastenkombination im Edit1 !
           ShowMessage('Der zu verwendende HotKey ist ungültig!');
 

Abfrage eines HotKey:

Wurde eine Tastenkombination gedrückt, so wird der HotKeyManager den Code starten, der hinter dem Ereignis OnHotKeyPressed (Objektinspektor) hinterlegt wurde. Dort könnte z.B. sowas stehen:

   SetForegroundWindow(Application.Handle);
     if Index = HotKey1 then ShowMessage('Hotkey 1 wurde gedrückt.');
     if Index = HotKey2 then ShowMessage('Hotkey 2 wurde gedrückt.');
 

Entfernen eines HotKey:

   HotKeyManager1.RemoveHotKey(TextToHotKey('CTRL+A',true));
 

Nähere Infos, Hilfe und Demo siehe Download-Archiv.

Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !

[letzte Aktualisierung 25.01.2007]