Key und Shift zu ShortCut verknüpfen

Rund um die LCL und andere Komponenten
Antworten
Kay
Beiträge: 134
Registriert: So 14. Nov 2010, 15:17

Key und Shift zu ShortCut verknüpfen

Beitrag von Kay »

Hallo,

ich würde gern die Tastenkombination, die in einem Eingabefeld gedrückt wird, einem bestimmten Menüeintrag zuweisen wollen. Allerdings weiß ich nicht, wie die Werte von Key und Shift kombiniert werden können, sodass z.B. Strg+O entsteht:

Code: Alles auswählen

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Data: Word;
begin
  if Key = 8 then
    MenuItem1.ShortCut := 0
  else
  begin
    Data := Key;
    if Data >= 32 then
    begin
      // ?
      if ssAlt in Shift then Data := Data or Shift;
      if ssCtrl in Shift then Data := Data or Shift;
      if ssShift in Shift then Data := Data or Shift;
      MenuItem1.ShortCut := Data;
    end;
  end;
  Key := 0;
end;
Vielen Dank schonmal

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Key und Shift zu ShortCut verknüpfen

Beitrag von Christian »

MenuItem1.Shortcut := ShortCutToText('Strg+O');
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Kay
Beiträge: 134
Registriert: So 14. Nov 2010, 15:17

Re: Key und Shift zu ShortCut verknüpfen

Beitrag von Kay »

Leider nützt mir das nichts. Strg+O war ja nur ein Beispiel.
Ich möchte eine Tastenkombination, die der Anwender in einem Eingabefeld drückt, als Shortcut zuweisen. Deshalb behandel ich auch das KeyUp-Event...

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Key und Shift zu ShortCut verknüpfen

Beitrag von Christian »

Ja mach ich auch so.
Warum sollts nicht funktionieren wenn du Strg+= durch

if ssCtrl in Shift then
KeyKomb := 'Strg+'+chr(Key);

ersetzt ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Kay
Beiträge: 134
Registriert: So 14. Nov 2010, 15:17

Re: Key und Shift zu ShortCut verknüpfen

Beitrag von Kay »

Ach so meinst du das. Stimmt, das wäre eine Möglichkeit. Allerdings müsste ich dann die Funktion TextToShortCut anwenden.

Bitschubser
Beiträge: 63
Registriert: Mo 27. Aug 2012, 15:43

Re: Key und Shift zu ShortCut verknüpfen

Beitrag von Bitschubser »

Was ist mit

Code: Alles auswählen

MenuItem1.ShortCut := ShortCut(Key, Shift);
?

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Key und Shift zu ShortCut verknüpfen

Beitrag von mse »

Code: Alles auswählen

 
...
unit Menus;
...
function ShortCut(const Key: Word; const Shift : TShiftState) : TShortCut;
...
function ShortCut(const Key: Word; const Shift : TShiftState) : TShortCut;
begin
  Result := LCLType.KeyToShortCut(Key,Shift);
end;
 

Antworten