Autor Beitrag
K-J
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Sa 22.12.07 15:14 
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:

ausblenden 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 user profile iconjasocul: Code- durch Delphi-Tags ersetzt
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Sa 22.12.07 15:52 
user profile iconK-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:

ausblenden 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
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Sa 22.12.07 15:55 
Immer schön, wenn man auch mitteilt, dass Crossposts vorhanden sind...

www.delphipraxis.net...ttons+erstellen.html

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
K-J Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: So 23.12.07 02:47 
user profile icondummzeuch hat folgendes geschrieben:
user profile iconK-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:

ausblenden 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?




user profile iconjakobwenzel 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: So 23.12.07 13:30 
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:

ausblenden 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