AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Mainmenue: untermenues verschwinden lassen

Mainmenue: untermenues verschwinden lassen

Ein Thema von Hartfrid Krause · begonnen am 4. Jun 2012 · letzter Beitrag vom 5. Jun 2012
Antwort Antwort
Seite 1 von 2  1 2   
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#1

Mainmenue: untermenues verschwinden lassen

  Alt 4. Jun 2012, 09:26
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.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Mainmenue: untermenues verschwinden lassen

  Alt 4. Jun 2012, 09:32
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
42.982 Beiträge
 
Delphi 12 Athens
 
#3

AW: Mainmenue: untermenues verschwinden lassen

  Alt 4. Jun 2012, 09:48
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?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#4

AW: Mainmenue: untermenues verschwinden lassen

  Alt 4. Jun 2012, 11:04
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.532 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Mainmenue: untermenues verschwinden lassen

  Alt 4. Jun 2012, 11:08
Dann setz doch einfach bei den entsprechenden MenuItems Visible auf false.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Mainmenue: untermenues verschwinden lassen

  Alt 4. Jun 2012, 11:37
Eine Abfrage nach Auswählen des Untermenus ist möglich, aber eigentlich zu umständlich.
Es gibt meines Wissenstandes nach keine einfache Schnell-Lösung für diese Aufgabe. Wenn ich z.B. in einer Datenbank-Anwendung gewisse Menüpunkte unzugänglich machen möchte, nachdem (oder bevor) der Anwender eine Tabelle in den Edit-Modus versetzt, dann muß ich dafür eine Procedure erstellen, die ich gewöhnlich ...SchreibenErlaubt bzw. ...SchreibenVerboten nenne. Und weil ich meist mit einer TActionList arbeite, manipuliere ich nicht die Menü-Einträge direkt, sondern die der Aktionsliste:
Delphi-Quellcode:
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;
Aufgerufen wird das dann, wenn der Anwender z.B. einen Eintrag ändern will bzw. wenn er die Änderung abgeschlossen hat:
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 Menüpunkt.Enabled := FALSE; , 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.

Geändert von Perlsau ( 4. Jun 2012 um 11:42 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: Mainmenue: untermenues verschwinden lassen

  Alt 4. Jun 2012, 12:07
Ich will unter gewissen Umständen in diesen Untermenus einen Teil verschwinden/nicht anzeigen lassen.
Du bist der Programmierer, du weißt unter welchen Umständen die Menü-Items verschwinden sollen, das weiß das Programm nicht, d. h. du mußt dem Programm das schon sagen wann die verschwinden sollen.

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:
procedure TForm1.Datei1Click(Sender: TObject);
begin
  Speichern1.Enabled := Memo1.Modified;
end;
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.

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:
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;
Aber wie gesagt, das habe ich nicht gepostet, nur habe ich das Gefühl, dass ...
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Mainmenue: untermenues verschwinden lassen

  Alt 4. Jun 2012, 13:38
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#9

AW: Mainmenue: untermenues verschwinden lassen

  Alt 4. Jun 2012, 17:56
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.532 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Mainmenue: untermenues verschwinden lassen

  Alt 4. Jun 2012, 18:01
Sollte es nicht genügen, im OnClick des übergeordneten MenuItems einfach
EinzelneErgebnissevonParteien.Visible := richtige_Regionsauswahl; auszuführen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:31 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