Autor Téma: Zrušenie ShortCut v ActionManager  (Přečteno 151 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4111
  • Karma: 36
    • Verze Delphi: XE7 professional
Zrušenie ShortCut v ActionManager
« kdy: 24-04-2019, 10:41:09 »
Mám túto funkciu a teraz si nie som istý, či je správna. Či mi likviduje ShortCut.
Kód: Delphi [Vybrat]
  1. procedure TCustomNavigator.DestroyShortCut;
  2. var
  3.   I, K: Integer;
  4.   BarItem: TActionBarItem;
  5.   Client: TActionClientItem;
  6.   Action: TAction;
  7. begin
  8.   for I := 0 to FActManager.ActionBars.Count -1 do
  9.   begin
  10.     BarItem := FActManager.ActionBars.ActionBars[I];
  11.      if BarItem.ActionBar <> nil then
  12.     begin
  13.       for K := 0 to BarItem.Items.Count -1 do
  14.       begin
  15.         Client := BarItem.Items[K];
  16.          if Client.Action <> nil then
  17.         begin
  18.           Action := TAction(Client.Action);
  19.            if Action <> nil then
  20.             Client.ShortCut := TextToShortCut('');
  21.         end;      end;    end;  end;end;
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4111
  • Karma: 36
    • Verze Delphi: XE7 professional
Re:Zrušenie ShortCut v ActionManager
« Odpověď #1 kdy: 24-04-2019, 11:01:10 »
A takto ich vytváram
Kód: Delphi [Vybrat]
  1. procedure TCustomNavigator.SetShortCut;
  2. begin
  3.   if FActToolBar.CanFocus then
  4.   begin
  5.     FActions[naFirst].ShortCut := ShortCut(Word('F'), [ssCtrl]);
  6.     FActions[naInsert].ShortCut := TextToShortCut('Ins');
  7. ...
  8.    end;
  9. end;
  10.  
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4111
  • Karma: 36
    • Verze Delphi: XE7 professional
Re:Zrušenie ShortCut v ActionManager
« Odpověď #2 kdy: 24-04-2019, 11:06:45 »
Opäť klasika. Inšpirovaný priradením som to prerobil na
Kód: Delphi [Vybrat]
  1. FActions[naFirst].ShortCut := TextToShortCut('');
  2. ....
a zdá sa, že to funguje.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 646
  • Karma: 41
    • Verze Delphi: 10.3
Re:Zrušenie ShortCut v ActionManager
« Odpověď #3 kdy: 24-04-2019, 11:23:02 »
Používal jsem
Kód: Delphi [Vybrat]
  1. aOdstranit.ShortCut:=0;

Offline Delfin

  • Padawan
  • ******
  • Příspěvků: 1720
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Zrušenie ShortCut v ActionManager
« Odpověď #4 kdy: 24-04-2019, 20:32:36 »
Excellent
Rated 1 time
Kód: Delphi [Vybrat]
  1. FActions[naFirst].ShortCut := scNone; // scNone je deklarovan jako specialni hodnota TShortCut (v aktualni verzi Delphi) v modulu System.Classes
« Poslední změna: 24-04-2019, 20:36:42 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4111
  • Karma: 36
    • Verze Delphi: XE7 professional
Re:Zrušenie ShortCut v ActionManager
« Odpověď #5 kdy: 25-04-2019, 08:12:20 »
scNone poznajú aj XE7
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Delfin

  • Padawan
  • ******
  • Příspěvků: 1720
  • Karma: 66
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:Zrušenie ShortCut v ActionManager
« Odpověď #6 kdy: 25-04-2019, 23:43:17 »
scNone poznajú aj XE7

Super :) No, jak jsem se posleze dival, ten komentar o modulu "aktualni" verze Delphi jsem pridal snad i zbytecne, jelikoz uz Delphi 7 (jenz k dnesnimu datu existuje vice jak 16 let) obsahuje v modulu Classes komentar "{!! Moved here from menus.pas !!}":

Kód: Delphi [Vybrat]
  1. {!! Moved here from menus.pas !!}
  2. { TShortCut special values }
  3.  
  4. scShift = $2000;
  5. scCtrl = $4000;
  6. scAlt = $8000;
  7. scNone = 0;
« Poslední změna: 25-04-2019, 23:51:48 od Delfin »
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!