![]() |
Mainmenue: untermenues verschwinden lassen
Ich habe ein mainmenu und in den 5 Gruppen jeweils 4 untermenus.
Ich möchte, dass unter gewissen Umständen jeweils eins (oder mehrere) der verschiedenen Untermenus nicht angezeigt werden, da es - inhaltlich - nicht ausgewählt werden kann. Welche Möglichkeit gibt es hier, dies zu realisieren? Eine Abfrage nach Auswählen des Untermenus ist möglich, aber eigentlich zu umständlich. |
AW: Mainmenue: untermenues verschwinden lassen
Also was du auf jeden Fall machen kannst ist ein Menü-Item Enabled = False zu schalten. Dann können auch die Untermenüs nicht aufgerufen werden.
|
AW: Mainmenue: untermenues verschwinden lassen
Du willst was "nicht sichtbar" machen?
Wie wäre es mit Visible der Menüpunkte (dort wo das Untermenü dran hängt) auf False setzen? |
AW: Mainmenue: untermenues verschwinden lassen
Das Mainmenu hat vier Teile.
In jedem dieser Teiel sind wieder 5 Untermenus. Ich will unter gewissen Umständen in diesen Untermenus einen Teil verschwinden/nicht anzeigen lassen. Ich will nicht das ganze Untermenu verschwinden lassen. |
AW: Mainmenue: untermenues verschwinden lassen
Dann setz doch einfach bei den entsprechenden MenuItems Visible auf false.
|
AW: Mainmenue: untermenues verschwinden lassen
Zitat:
Delphi-Quellcode:
Aufgerufen wird das dann, wenn der Anwender z.B. einen Eintrag ändern will bzw. wenn er die Änderung abgeschlossen hat:
PROCEDURE TFormMain.Projekt_SchreibenErlaubt;
BEGIN AL_Projekt_Neu.Enabled := FALSE; //AktionsListen-Eintrag ProjektNeu deaktivieren AL_Projekt_Delete.Enabled := FALSE; //AktionsListen-Eintrag ProjektDelete deaktivieren AL_Projekt_Edit.Enabled := FALSE; //AktionsListen-Eintrag ProjektEdit deaktivieren AL_Projekt_Post.Enabled := TRUE; //AktionsListen-Eintrag ProjektPost aktivieren AL_Projekt_Cancel.Enabled := TRUE; //AktionsListen-Eintrag ProjektCancel aktivieren DBEd_ProjektTitel.ReadOnly := FALSE; //DB-Edit Titel auf Read & Write setzen END; PROCEDURE TFormMain.Projekt_SchreibenVerboten; BEGIN AL_Projekt_Neu.Enabled := TRUE; //AktionsListen-Eintrag ProjektNeu aktivieren AL_Projekt_Delete.Enabled := TRUE; //AktionsListen-Eintrag ProjektDelete aktivieren AL_Projekt_Edit.Enabled := TRUE; //AktionsListen-Eintrag ProjektEdit aktivieren AL_Projekt_Post.Enabled := FALSE; //AktionsListen-Eintrag ProjektPost deaktivieren AL_Projekt_Cancel.Enabled := FALSE; //AktionsListen-Eintrag ProjektCancel deaktivieren DBEd_ProjektTitel.ReadOnly := TRUE; //DB-Edit Titel auf ReadOnly setzen END;
Delphi-Quellcode:
procedure TFormMain.AL_Projekt_EditExecute(Sender: TObject);
begin Projekt_SchreibenErlaubt; DatMod.Dset_Projekte.Edit; end; procedure TFormMain.AL_Projekt_PostExecute(Sender: TObject); begin DatMod.Dset_Projekte.Post; Projekt_SchreibenVerboten; end; // oder procedure TFormMain.AL_Projekt_CancelExecute(Sender: TObject); begin DatMod.Dset_Projekte.Cancel; Projekt_SchreibenVerboten; end; Willst du jedoch einen kompletten Menüpunkt deaktivieren, genügt ein
Delphi-Quellcode:
, was natürlich auch für Untermenüpunkte gilt. Am besten, wie bereits empfohlen, machst du das in speziellen Proceduren, so daß du für verschiedene Fälle genau die richtigen Einträge ein- und ausschaltest.
Menüpunkt.Enabled := FALSE;
|
AW: Mainmenue: untermenues verschwinden lassen
Zitat:
Wie das mit dem Verschwinden geht hast du schon oben mitbekommen. Wie man das angehen kann hat Perlsau in einem Beispiel gezeigt. Vielleicht ein anderer Ansatz, wenn dir If Then nicht gefällt, statt True und False verwende ich gerne Bedingungen
Delphi-Quellcode:
Vielleicht eine Idee, ich packe die Abfragen gelegentlich das in die Haupt-Items (k. A. wie die heißen), so daß beim Klick drauf die Bedingungen durchlaufen werden.
procedure TForm1.Datei1Click(Sender: TObject);
begin Speichern1.Enabled := Memo1.Modified; end; Ich hab es zwar noch nie gemacht, aber wenn es etwas dirty sein darf, jedes MenüItem hat ein Tag Eintrag. Man könnte es missbrauchen und Items zusammenfassen für eine Anfrage, aber dafür ist es nicht gedacht.
Delphi-Quellcode:
Aber wie gesagt, das habe ich nicht gepostet, nur habe ich das Gefühl, dass ...
procedure TForm1.Datei1Click(Sender: TObject);
var i: Integer; begin for i := 0 to Datei1.Count - 1 do Datei1.Items[i].Enabled := Datei1.Items[i].Tag = 1; end; |
AW: Mainmenue: untermenues verschwinden lassen
Nehmen wir mal an, daß alle Menueeinträge, die sich mit Dateiverarbeitung beschäftigen so lange gesperrt oder unsichtbar sind, solange keine Datei gelesen wurde,
Dann wirst Du nicht darum herum kommen diese Einträge über Visible/Enabled zu markieren. Übrigens wenn Du den Menuepunkten vernünftige Namen gegeben hast, dann ist das eigentlich kein Problem. Gruß K-H |
AW: Mainmenue: untermenues verschwinden lassen
Das mainmenu1 enthält drei kategorien.
eRGEBNIISE EINES bUNDESLANDES Alle Bundesländer Europawahlen. In der ersten Kategorie (Ergebnissse eines Bundesalndes) sind folgende Untermenus verpackt: - Überblick über die Ergebisse eines Landes - Gewinne und Verluste - Darstellung eines Bundeslandes - Einzelne Ergebnisse von Parteien - Anderes Bundesland auswählen Ich will unter bestimmten Bedingungen, dass Einzelnen Ergebnisse von Parteien NICHT im Untermenue angezeigt werden, wenn ich davor in eineem vorausgehenden Datenblatt etwa Europaergebnisse angeklickt habe. Also: if ...{falsche Regionalauswahl]... then {untermenu Einzelnen Ergebnisse... nicht als Auswahl angezeigt. Das klappt so noch nicht. |
AW: Mainmenue: untermenues verschwinden lassen
Sollte es nicht genügen, im OnClick des übergeordneten MenuItems einfach
Delphi-Quellcode:
auszuführen?
EinzelneErgebnissevonParteien.Visible := richtige_Regionsauswahl;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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