Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TActionlist -> Kategorien auslesen und Action enabled = TRUE (https://www.delphipraxis.net/109991-tactionlist-kategorien-auslesen-und-action-enabled-%3D-true.html)

HolgerCW 11. Mär 2008 09:58


TActionlist -> Kategorien auslesen und Action enabled = T
 
Hallo zusammen,

1. wie kann ich bei einer TActionliste alle Kategorien in eine StringListe auslesen ? Für die einzelnen Actions mache ich es so:

Delphi-Quellcode:
For I := 0 to DM.Actionliste.ActionCount - 1 do
begin

 if AnsiLowerCase(DM.Actionliste.Actions[I].ClassName) = AnsiLowerCase(CB.Text) then
 begin

  StrList.add(DM.Actionliste.Actions[I].Name);

 end;

end;
2. Wie kann ich alle Actions die einer Kategorie zugeordnet sind enabled = TRUE/FALSE setzen ? (Würde dann den vorher ausgelesenen Kategorienamen dafür nutzen wollen)

Gruss

Holger

HolgerCW 11. Mär 2008 11:43

Re: TActionlist -> Kategorien auslesen und Action enabled
 
Für 1tens ist das meine Lösung:

Delphi-Quellcode:
var
 Kategorie: String;

...

For I := 0 to DM.Actionliste.ActionCount - 1 do
begin

 if Kategorie <> DM.Actionliste.Actions[I].Category then
 begin

  StrList.add(DM.Actionliste.Actions[I].Category);

 end;

 Kategorie := DM.Actionliste.Actions[I].Category;

end;
Wenn da jemand was besseres weiss immer her damit ...

für 2tens ist das meine Lösung:

Delphi-Quellcode:
For I := 0 to DM.Actionliste.ActionCount - 1 do
begin

 if DM_Query.Query_Berechtigung['ITEM'] = DM.Actionliste.Actions[I].Category then
 begin

  MeineAction := TAction(FindComponent(DM.Actionliste.Actions[I].Name));

  MeineAction.Enabled := TRUE;

 end;

end;
Wenn auch dort jemand was besseres weiss, immer her damit...

Gruss

Holger

marabu 11. Mär 2008 11:55

Re: TActionlist -> Kategorien auslesen und Action enabled
 
Hallo Holger,

wenn bei deiner ersten Lösung die Actions nicht nach Kategorie sortiert vorliegen, dann trägst du sie evtl. mehrfach ein.

Delphi-Quellcode:
procedure GetCategories(al: TActionList; s: TStrings);
var
  i: Integer;
begin
  s.BeginUpdate;
  try
    s.Clear;
    with al do
      for i := 0 to Pred(ActionCount) do
        if s.IndexOf(Actions[i].Category) < 0 then
          s.Add(Actions[i].Category);
  finally
    s.EndUpdate;
  end;
end;
Freundliche Grüße

HolgerCW 11. Mär 2008 12:04

Re: TActionlist -> Kategorien auslesen und Action enabled
 
Alles klar. Vielen dank.

Doppelt habe ich die nicht drin. Dachte nur das halt z.B. 2 Action ja die gleiche KAtegorie haben können und daher diese mehrfach in die Stringlist geschrieben würde ...

Gruss

Holger


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz