MenuPunkte aktivieren - deaktivieren
-
Hallo,
bei umfangreicheren Pull-Down-Menues kommt es vor, daß entsprechend dem Programmverlauf Menuepunkte aktiviert bzw. deaktiviert werden müssen, z.B. bevor Daten nicht geladen wurden, sollen die Menuepunkte zum Editieren den Daten nicht zugänglich sein.Dies führt bei mir regelmäßig zu umfangreicheren Entscheidungsbäumen. Ich hoffe nun, dass einige von euch da bessere Lösungen haben.
void Ablaufsteuerung(int Modus) { //Ausgangszustand des Menues Form1->MnuKlassen1->Enabled=false; Form1->MnuFaecher1->Enabled=false; Form1->MnuArbeiten1->Enabled=false; Form1->MnuNamen1->Enabled=false; Form1->MnuKorrigieren1->Enabled=false; Form1->MnuErgebnisse1->Enabled=false; if (Modus==1) { Form1->MnuKlassen1->Enabled=true; Form1->MnuFaecher1->Enabled=true; } //...uswDie Variable Modus steht hier für einen "Zustand" des Programmes, für den bestimmte MenuePunkte ein-auswählbar sein sollen. Grundsätzlich deaktiviere ich alle Menuepunkte zunächst, um dann die entsprechenden zu aktivieren.
Wie macht ihr das? Gibt es da eine geschicktere Lösung ?
Grüße von sehreilig
-
Hallo
du kannst das ganze Konzept auf TAction-Handler in einer TActionList umstellen. Wenn du dann einen Menüpunkt mit einer Action verbindest, wird der Zustand der Action automatisch an den Munüpunkt weitergeleitet.
Der Witz daran ist, das das auch u.a. für Buttons gilt, so das nur noch einmal der Zustand der Action geändert werden muß, statt alle dazugehörigen GUI-Elemente.bis bald
akari
-
Hallo akari,
danke für die schnelle Antwort.
ich hab gleich mal ein bisschen probiert: das hab ich gesucht !Ich müsste also:
1. Actions anlegen, die ich den Menue-Punkten zuordne.
2. In den ActionEreignissen dann festlegen, was beim Auslösen der Action geschehen soll.Ein Vorteil ist, dass ich die Actions auch auf Buttons o.a beziehen kann.
In der Action steht dann etwa sowas:
void __fastcall TForm1::OeffnenExecute(TObject *Sender) { MnuKlassen1->Enabled=true; MnuFaecher1->Enabled=true; }Vielen Dank !
Grüße von sehreilig