Gibt es eine Hotkey-Komponente?

Rund um die LCL und andere Komponenten
Antworten
Dee
Beiträge: 54
Registriert: Do 10. Jul 2014, 20:56
OS, Lazarus, FPC: Windows 10 Pro 64-bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: Ryzen 5 2600

Gibt es eine Hotkey-Komponente?

Beitrag von Dee »

Hallo Leute,

gibt es eine Hotkey-Komponente wie in Delphi 7 (THotkey)? Ich habe mich schon umgesehen und nach Lazarus-Komponenten gesucht, aber nichts gefunden. Ich habe vor eine Option zu implementieren, die es dem Nutzer erlaubt, durch Drücken einer Tastenkombination diese zu visualisieren (z.B. STRG + SHIFT + A). Dann steht in einem Feld oder einem Label die gedrückte Kombination. Ich habe schon versucht, Code für ein Edit-Feld zu schreiben. Klappt auch ganz gut, aber eine vorhandene Komponente wäre mir lieber.

Code: Alles auswählen

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  Edit1.Clear;
 
  if (ssCtrl in Shift) then
    Edit1.Text := 'Strg';
 
  if (ssShift in Shift) then
  begin
    if (Edit1.Text <> '') then
      Edit1.Text := Edit1.Text + '+ Shift '
    else
      Edit1.Text := 'Shift'
  end;
 
  if (ssAlt in Shift) then
  begin
    if (Edit1.Text <> '') then
      Edit1.Text := Edit1.Text + '+ Alt '
    else
      Edit1.Text := 'Alt'
  end;
 
  if (Chr(Key) in ['a'..'z', 'A'..'Z']) then
  begin
    if (Edit1.Text <> '') then
      Edit1.Text := Edit1.Text + ' + ' + Chr(Key)
    else
      Edit1.Text := Chr(Key)
  end;
 
  if (Chr(Key) in ['a'..'z', 'A'..'Z']) then
    LastKey := Chr(Key)
end;
Ist nicht ganz ausgereift, reicht aber als Demo.

--Dee

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Gibt es eine Hotkey-Komponente?

Beitrag von Komoluna »

Am einfachsten ist glaub ich ein TMainMenu(ein verstecktes TMenuItem darunter) zu nehmen, und dann die Hotkey Eigenschaft zu setzen.
Bei OnClick (oder so) kannste dann deinen Code ausführen...

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Dee
Beiträge: 54
Registriert: Do 10. Jul 2014, 20:56
OS, Lazarus, FPC: Windows 10 Pro 64-bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: Ryzen 5 2600

Re: Gibt es eine Hotkey-Komponente?

Beitrag von Dee »

@Komoluna: Oh, ich habe vergessen zu erwähnen, dass es ein systemweiter Hotkey sein soll. Außerdem will ich das Setzen des Hotkeys visualisieren und da würde mir dein Vorschlag nicht helfen, aber dennoch danke.

--Dee

LazProgger
Beiträge: 63
Registriert: Di 11. Mär 2014, 00:33

Re: Gibt es eine Hotkey-Komponente?

Beitrag von LazProgger »

Hier steht, wie man in Delphi einen systemweiten Hotkey registrieren kann:

http://www.askingbox.de/tutorial/delphi ... ter-hotkey

Und im Kommentar darunter, wie es mit Lazarus geht.

Ist zwar keine Komponente, hab ich aber auch schon so in einem Lazarus-Programm systemweit zum laufen bekommen.

Dee
Beiträge: 54
Registriert: Do 10. Jul 2014, 20:56
OS, Lazarus, FPC: Windows 10 Pro 64-bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: Ryzen 5 2600

Re: Gibt es eine Hotkey-Komponente?

Beitrag von Dee »

@LazProgger: Ich weiß, wie man einen systemweiten Hotkey mit Lazarus setzt, aber ich will den Tastenkürzel visualisieren. Gibt es wirklich keine passende Komponente?

--Dee
Zuletzt geändert von Dee am Mi 11. Feb 2015, 19:18, insgesamt 1-mal geändert.

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Gibt es eine Hotkey-Komponente?

Beitrag von Komoluna »

Was meinst du mit Visualisieren?

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Dee
Beiträge: 54
Registriert: Do 10. Jul 2014, 20:56
OS, Lazarus, FPC: Windows 10 Pro 64-bit, Lazarus 2.0.10, FPC 3.2.0
CPU-Target: Ryzen 5 2600

Re: Gibt es eine Hotkey-Komponente?

Beitrag von Dee »

Mit Visualisieren meine ich, es so darzustellen, dass der Nutzer sieht, welche Tastenkombination gedrückt wurde (siehe obigen Code). Mein Code funktioniert in einem Edit-Feld, das auf ein KeyDown-Event reagiert. Dann wird im Edit-Feld angezeigt, welche Taste(n) gedrückt wurde(n).

--Dee

Komoluna
Beiträge: 565
Registriert: So 26. Aug 2012, 09:03
OS, Lazarus, FPC: Windows(10), Linux(Arch)
CPU-Target: 64Bit

Re: Gibt es eine Hotkey-Komponente?

Beitrag von Komoluna »

In Lazarus bei den Hotkeyproperties im Objektinspektor gibts doch sowas.
Guck doch mal, wie das da gelöst ist(Lazarus ist ja glücklicherweise OpenSource).

MFG

Komoluna
Programmer: A device to convert coffee into software.

Rekursion: siehe Rekursion.

Antworten