| Autor |
Beitrag |
Toastbrotbaby
      
Beiträge: 98
|
Verfasst: Do 15.12.05 12:36
Moin,
folgendes Problem.
Ich habe 8 Button die mit einem OnClick Ereignis versehen sind.
Aber ich weiss auf teufel komm raus nicht wie ich es machen soll das die das auch per OnKeyDown tun. Es soll ein einfacher Hotkey werden. Wenn ich das OnClick erstelle muss ich ja nur nen Doppelklick auf den Button machen und ihm sagen was er zu tun hat. Aber wie sage ich ihm das er das auch auf Tastendruck zu tun hat?
Ich hoffe ihr könnt mir helfen.
Gruss
Toast
|
|
Fienix
      
Beiträge: 109
Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
|
Verfasst: Do 15.12.05 12:43
erstmal
Form1.KeyPreview := TRUE;
dann nur noch im Form1 doppelt auf das OnKeyPress Ereignis klicken und
Delphi-Quelltext 1:
| if Key = HotKey then Btn1.Click; |
|
|
Toastbrotbaby 
      
Beiträge: 98
|
Verfasst: Do 15.12.05 12:50
also wenn ich dich richtig verstanden habe ...
KeyPreview ist schon auf True. Das ist das einzige was ich schon wusste
Delphi-Quelltext 1:
| if Key = HotKey then Btn1.Click; |
Das dann in abgewandelter Form 8 mal in die Procedure schreiben direkt hintereinander weg?
Danke für deine schnelle antwort.
Gruss
Toast
|
|
Fienix
      
Beiträge: 109
Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
|
Verfasst: Do 15.12.05 12:54
Genau,
schöner und schneller ist natürlich
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| case Key of HotKey1 : Bt1.Click; HotKey2 : Bt2.Click; HotKey3 : Bt3.Click; ...... end; |
|
|
Toastbrotbaby 
      
Beiträge: 98
|
Verfasst: Do 15.12.05 12:54
Hmmm ....
Ich kriege die Fehlermeldung "Inkompatible Typen" bei dem Then.
KeyPreview ist True. Warum auch immer das jetzt wieder so ist.
Hmm ...
Also ich hab jetzt die Case of Variante ausprobiert. Es kommt schon mal keine Fehlermeldung. Ist schon besser als die if then sache.
Aber das Hauptproblem ist noch da. Es funktioniert leider noch nicht. Muss ich an den Buttons noch irgendwelche einstellungen vornehmen?
oder sonst noch was tun?
VK_Numpad1 ist doch die Taste 1 auf dem Numblock oder? bzw VK_Shift ist doch Shift ... oder irre ich?
Gruss
Toast
|
|
Fienix
      
Beiträge: 109
Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
|
Verfasst: Do 15.12.05 13:02
Bei KeyPress musst du die wirklichen Tastencodes angeben,
bei KeyDown oder KeyUp die virtuelle Windows-Tastencode (VK_ * )
mach am besten nen BreakPoint beim if, dann kannst du den Tastencode aus der "Key" Variable lesen
und eintragen!
|
|
Toastbrotbaby 
      
Beiträge: 98
|
Verfasst: Do 15.12.05 13:40
okay hab es jetzt in ein OnKeyDown umgeschrieben und mit den VK codes gemacht. Funktioniert bestens.
Jetzt kommt noch ein winziges Problem auf mich zu. Die Hotkeys funktionieren nicht wenn das programm minimiert ist. Kann man das so umschreiben das es auch funktioniert wenn das teil minimiert wurde?
Gruss
Toast
|
|
Fienix
      
Beiträge: 109
Win 2K, Win XP Pro, Win 7
D 5 Pro., D 7 Ent., D 2010 Pro.
|
Verfasst: Do 15.12.05 13:50
Tja,  das ist der Nachteil, das Fenster muss immer den Focus haben.
Ansonsten musst du mal nach HOOKS suchen!
|
|
azubi_20
      
Beiträge: 593
WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
|
Verfasst: Do 15.12.05 13:51
Es ist möglich, aber etwas komplizierter. Schau dir mal RegisterHotKey an.
Beispiel
|
|
Toastbrotbaby 
      
Beiträge: 98
|
Verfasst: Do 15.12.05 14:15
Danke euch beiden.
habe mir beides angesehen und habe gelesen das die Hooks etwas komplizierter sind als die RegisterHotkeys
Gruss
Toast
|
|