Entwickler-Ecke
Sonstiges (Delphi) - Wie erstellt man Hotkeys für die Buttons?
K-J - Sa 22.12.07 15:14
Titel: Wie erstellt man Hotkeys für die Buttons?
Hallo,
ich beschäftige mich erst seit 2 Tagen mit Delphi und würde gerne wissen, wie ich den Buttons Hotkeys zuordnen kann.
Ich hatte schon Google benutzt und habe auch eine kleine Anleitung dafür gefunden, bei der man aus der Komponentenleiste unter der Spalte "System" einen "Timer" setzen muss, und dort dann folgenden Code einfügen muss:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Timer2Timer(Sender: TObject); begin if odd(GetAsyncKeyState (VK_F2)) then begin button2.click; end; end; |
Damit kann ich allerdings immer nur
eine Taste als Hotkey festlegen (wie z.B. die F2-Taste hier im Beispiel).
Nun möchte ich aber die "button2.click"-Funktion z.B. mit "Alt+P" aktivieren.
Könnte mir bitte jemand dazu den oberen Code umschreiben?
Moderiert von
jasocul: Code- durch Delphi-Tags ersetzt
dummzeuch - Sa 22.12.07 15:52
Titel: Re: Wie erstellt man Hotkeys für die Buttons?
K-J hat folgendes geschrieben: |
Damit kann ich allerdings immer nur eine Taste als Hotkey festlegen (wie z.B. die F2-Taste hier im Beispiel).
Nun möchte ich aber die "button2.click"-Funktion z.B. mit "Alt+P" aktivieren. |
Am einfachsten ist, wenn Du den Hotkey bereits in der Button-Beschriftung festlegst, dann ist der Button automatisch mit Alt-<buchstabe> verknuepft:
Delphi-Quelltext
1:
| Button1.Caption := '&Press me'; |
(Natuerlich geht das auch direkt im Designer.)
Wenn das nicht geht (z.B. Du willst Ctrl-P als Shortcut zuweisen), so bieten sich Actions an:
1. eine TActionList auf den Dialog werfen
2. mit Doppelklick den Designer dazu aufrufen
3. eine Action hinzufuegen
4. der Action die Caption des Buttons und dem OnExecute-Event die bisherige OnClick-Methode des Buttons zuweisen
5. TAction hat zwei Properties: ShortCut und SecondaryShortCut. Ersterem kannst Du einfach durch Auswaehlen einen der vorgegebenen Shortcuts zuweisen, die zweite ist eine Stringlist, da musst Du ein bestimmtes Format beachten. In Deinem Fall wuerde ich es erstmal mit ShortCut versuchen
6. der Action property des Buttons die gerade erzeugte Action zuweisen
7. Falls Du irgendwo den Button en- oder disablest, musst Du das zukuenftig mit der Action tun.
Der Rest funktioniert automatisch.
twm
K-J - So 23.12.07 02:47
Titel: Re: Wie erstellt man Hotkeys für die Buttons?
dummzeuch hat folgendes geschrieben: |
K-J hat folgendes geschrieben: | Damit kann ich allerdings immer nur eine Taste als Hotkey festlegen (wie z.B. die F2-Taste hier im Beispiel).
Nun möchte ich aber die "button2.click"-Funktion z.B. mit "Alt+P" aktivieren. |
Am einfachsten ist, wenn Du den Hotkey bereits in der Button-Beschriftung festlegst, dann ist der Button automatisch mit Alt-<buchstabe> verknuepft:
Delphi-Quelltext 1:
| Button1.Caption := '&Press me'; |
(Natuerlich geht das auch direkt im Designer.)
Wenn das nicht geht (z.B. Du willst Ctrl-P als Shortcut zuweisen), so bieten sich Actions an:
1. eine TActionList auf den Dialog werfen
2. mit Doppelklick den Designer dazu aufrufen
3. eine Action hinzufuegen
4. der Action die Caption des Buttons und dem OnExecute-Event die bisherige OnClick-Methode des Buttons zuweisen
5. TAction hat zwei Properties: ShortCut und SecondaryShortCut. Ersterem kannst Du einfach durch Auswaehlen einen der vorgegebenen Shortcuts zuweisen, die zweite ist eine Stringlist, da musst Du ein bestimmtes Format beachten. In Deinem Fall wuerde ich es erstmal mit ShortCut versuchen
6. der Action property des Buttons die gerade erzeugte Action zuweisen
7. Falls Du irgendwo den Button en- oder disablest, musst Du das zukuenftig mit der Action tun.
Der Rest funktioniert automatisch.
twm |
Hallo,
erstmal danke für die Antwort.
Leider bringt mich das noch nicht so ganz ans Ziel...
Also ich habe hier zwei Buttons: Button1 aktiviert eine Funktion, und Button2 deaktiviert diese Funktion.
Und nun möchte ich, dass Button1 mit Hotkey [Numpad 1] aktiviert wird, und Button2 soll mit Hotkey [Alt]+[Numpad 1] aktiviert werden.
Bei "ShortCut" im ActionList-Objektinspektor kann ich zwar als Hotkey [Alt]+[1] eintragen, aber ich bekomme es nicht hin, dort [Alt]+[
Numpad 1] einzutragen.
Kann mir jemand helfen?
jakobwenzel hat folgendes geschrieben: |
Immer schön, wenn man auch mitteilt, dass Crossposts vorhanden sind... |
Und was soll so schlimm daran sein, wenn man in zwei verschiedenen Foren gleichzeitig nachfragt?
Im Endeffekt erhöht das nur meine Chance, eine brauchbare Antwort zu bekommen...
Trotzdem danke, dass du dir die Mühe gemacht hast, in diesen Thread zu schauen.
Gruß
K-J
dummzeuch - So 23.12.07 13:30
Titel: Re: Wie erstellt man Hotkeys für die Buttons?
Zitat: |
Zitat: | Wenn das nicht geht (z.B. Du willst Ctrl-P als Shortcut zuweisen), so bieten sich Actions an:
5. TAction hat zwei Properties: ShortCut und SecondaryShortCut. Ersterem kannst Du einfach durch Auswaehlen einen der vorgegebenen Shortcuts zuweisen, die zweite ist eine Stringlist, da musst Du ein bestimmtes Format beachten. In Deinem Fall wuerde ich es erstmal mit ShortCut versuchen
|
Leider bringt mich das noch nicht so ganz ans Ziel...
Also ich habe hier zwei Buttons: Button1 aktiviert eine Funktion, und Button2 deaktiviert diese Funktion.
Und nun möchte ich, dass Button1 mit Hotkey [Numpad 1] aktiviert wird, und Button2 soll mit Hotkey [Alt]+[Numpad 1] aktiviert werden.
Bei "ShortCut" im ActionList-Objektinspektor kann ich zwar als Hotkey [Alt]+[1] eintragen, aber ich bekomme es nicht hin, dort [Alt]+[Numpad 1] einzutragen.
|
Man kann die Shortcuts auch im Programm zuweisen, dann ist die Auswahl groesser als im Object-Inspector:
Delphi-Quelltext
1: 2:
| Action1.ShortCut := Menus.ShortCut(VK_NUMPAD1, []); Action2.ShortCut := Menus.ShortCut(VK_NUMPAD1, [ssCtrl]); |
Ich hab's nicht getestet, aber so sollte es funktionieren.
twm
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!