AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TActionList enable/disable

Ein Thema von ThomasWB · begonnen am 13. Apr 2022 · letzter Beitrag vom 16. Apr 2022
Antwort Antwort
ThomasWB

Registriert seit: 21. Jun 2015
38 Beiträge
 
#1

TActionList enable/disable

  Alt 13. Apr 2022, 17:26
Hallo zusammen,
ich lade nach dem Start meiner Applikation eine Anzahl grösserer Dateien (Excel) im Hintergrund in Grids. Solange die Dateien nicht geladen sind, möchte ich alle Aktionen (Buttons, Menüs etc.), die diese Daten benötigen, deaktiviert haben,
Nachdem ich nun anfange TActionList zu verwenden, kam mir der Gedanke all die Aktionen, die mit diesen Dateien zusammenhängen, in eine TActionList zu packen und diese erst zu aktivieren, wenn alle Daten geladen sind.
Geht das irgendwie?
  Mit Zitat antworten Zitat
Benutzerbild von Billa
Billa

Registriert seit: 11. Aug 2003
237 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: TActionList enable/disable

  Alt 13. Apr 2022, 17:34
Hallo,
Ja, das geht recht einfach. Deine Actions haben jeweils ein "update"-Event. darin setzt Du "ActionXXX.Enabled" auf true/false abhängig vom Status des Ladens. Wird der Status durch die Laderoutinen irgendwann true, wird die entsprechende Action aktiviert...
Gruß Billa

Nur weil ich paranoid bin, heißt das nicht, daß die da draussen nicht hinter mir her sind....
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#3

AW: TActionList enable/disable

  Alt 13. Apr 2022, 17:46
Eventuell geht hier auch ActionList.State := asSuspended . Dabei bleibt zwar die Enabled-Eigenschaft der Actions unverändert, aber es wird kein Execute ausgeführt.

Siehe: System.Actions.TActionListState
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
ThomasWB

Registriert seit: 21. Jun 2015
38 Beiträge
 
#4

AW: TActionList enable/disable

  Alt 16. Apr 2022, 15:29
Vielen Dank für die Antworten. Leider ist keine von beiden meine erhoffte Lösung. Ich dachte, dass ich mit einem Schlag alle Aktionen einer ActionList deaktiviere.

Die Lösung von Uwe Raabe ist hier leider auch nur die halbe Lösung, da der Anwender in diesem Falle einen aktiven Button hat, auf den Button drückt (er ist ja nicht deaktiviert) und sich wundert, warum nichts geschieht.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: TActionList enable/disable

  Alt 16. Apr 2022, 15:34
Ich weiß nicht, ob das bei dir noch unter die Kategorie mit einem Schlag fällt:
Delphi-Quellcode:
  
  for var action in ActionList1 do
    action.Enabled := False;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
ThomasWB

Registriert seit: 21. Jun 2015
38 Beiträge
 
#6

AW: TActionList enable/disable

  Alt 16. Apr 2022, 18:37
for var action in ActionList1 do
action.Enabled := False;

Wahrscheinlich gibt es keine andere Lösung. Daher danke für diesen "knackigen", kurzen Code.
Evtl. werde ich mir eine Komponente mit einer Enable-Property bauen, die dann dahinter diesen Code hat.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#7

AW: TActionList enable/disable

  Alt 16. Apr 2022, 20:42
Evtl. werde ich mir eine Komponente mit einer Enable-Property bauen, die dann dahinter diesen Code hat.
Eventuell tut es auch ein class helper . Das erspart zumindest die Registrierung (und Verwendung) einer speziellen Komponente.
Delphi-Quellcode:
type
  TActionListHelper = class helper for TActionList
  private
    procedure SetEnabled(Value: Boolean);
  public
    property Enabled: Boolean write SetEnabled;
  end;

procedure TActionListHelper.SetEnabled(Value: Boolean);
begin
  for var action in Self do
    action.Enabled := Value;
end;
Mit dem Getter wird es allerdings etwas schwierig...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz