AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

bds2006 Menu Designer Limit

Ein Thema von cramer · begonnen am 10. Apr 2017 · letzter Beitrag vom 12. Apr 2017
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von cramer
cramer

Registriert seit: 23. Jun 2004
Ort: Velbert (NRW)
108 Beiträge
 
Delphi 2006 Enterprise
 
#1

bds2006 Menu Designer Limit

  Alt 10. Apr 2017, 19:54
Hallo,
ich habe ein umfangreiches PopUp-Menu ca 800 Einträge verteilt auf etliche Untermenüs.
Wenn ich in einem Unter-Menüpunkt einen Eintrag anlege, mit eindeutigem Namen MMMMMMMMMM und Caption MMMMMMMMMM, ist dieser vorhanden und wird nach dem Schließen des Designers und Speichern in der IDE auch gespeichert.
Wenn ich ihn suche, ist alles in Ordnung:
Delphi-Quellcode:
Processing file : H:\BDS2006\Projekte\MVU.dfm
10.04.2017 19:20:54, 344696 bytes
Line 8344 - object MMMMMMMMMM: TMenuItem
Line 8345 - Caption = 'MMMMMMMMMM'
Found 2 occurrences.

Processing file : H:\BDS2006\Projekte\MVU.pas
10.04.2017 19:20:44, 531942 bytes
Line 1293 - MMMMMMMMMM: TMenuItem;
Found 1 occurrences.
Wenn ich das Programm compiliere, ist auch in der EXE der Eintrag MMMMMMMMMM im Menü vorhanden.

Wenn ich dann in der IDE den Designer wieder öffne, ist der Eintrag MMMMMMMMMM im Untermenü auch noch vorhanden.
Wenn ich dann aber durch andere Menüeinträge und Untermenüs navigiere und wieder nach meinem MMMMMMMMMM schaue, ist er irgendwann verschwunden.
Nach Schließen des Designers und Speichern in der IDE verschwinden natürlich auch die Einträge in den Dateien.

Hat irgendjemand dazu eine Idee?
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.622 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: bds2006 Menu Designer Limit

  Alt 10. Apr 2017, 22:14
Das hört sich so an als wäre es sinnvoller die Einträge zur Laufzeit aus einer Datenbank zu lesen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: bds2006 Menu Designer Limit

  Alt 10. Apr 2017, 22:48
Aus Anwendersicht kann ich mir momentan nicht vorstellen, wie ich mich in so einem umfangreichen Menü zurechtfinden soll.

Könntest Du uns bitte kurz das "Warum, Wieso, Weshalb" beschreiben?

Eventuell hat ja dann jemand eine Idee, wie man es sonst noch machen könnte.

Habe mir vor ein paar Jahren abgewöhnt Menüs zu machen.

Dafür nehme ich 'nen Nachfahreneigenbau von TActionList.

Jede ActionList enthält die Actions einer bestimmten Aufgabe.

Beim Programmstart wird dann automatisch ein MainMenu für die Application erstellt und die TActionList-Nachfahren hängen für jede Action einen Menüeintrag an die passende Stelle im MainMenu. Hauptmenüeinträge und Untermenüpunkt werden dabei automatisch entsprechend eingeordnet.

Eventuell wäre das ja ein Ansatz.

Über die Methode Merge(Menu: TMainMenu) von TMainMenu kann man mehrere MainMenüs zusammenfassen, eventuell könntest Du halt erstmal mehrere MainMenüs machen, mit definierten Teilmengen. Und beim Programmstart könntest Du die dann zusammenfassen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: bds2006 Menu Designer Limit

  Alt 10. Apr 2017, 23:13
Um das zu erklären:

Im OnPopup des Menüs kann man beim Aufpoppen Items generieren, anstatt sie schon zur Designtime da drin zu haben.

Und bei deinen Unmassen an Items, würde ich eher die OnClick der ParentItems nutzen.
Da erstellt man anfangst nur ein "Dummy-Item", damit das als SubMenü verfügbar ist und beim MouseOver/Aufklappen wird OnClick im Item ausgelöst, bevor es auf geht und dann füllt man das SubMenü vollständig auf und löscht einen eventuell vorhandenen Dummy-Eintrag (oder macht den unsichtbar).


Alternativ wäre tatsächlich zu überlegen, das Gewollte als Pupup darzustellen überhaupt ein passender Weg ist.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von cramer
cramer

Registriert seit: 23. Jun 2004
Ort: Velbert (NRW)
108 Beiträge
 
Delphi 2006 Enterprise
 
#5

AW: bds2006 Menu Designer Limit

  Alt 11. Apr 2017, 08:42
Ich hatte schon befürchtet, daß die Antworten nicht mein Problem mit der IDE lösen sondern sich statt dessen mit den Fragen nach dem Sinn des Menüs befassen.

Seis drum, hier eine kurze Beschreibung.

Über das PopUp können Anwender Platzhalter in RichText Edits einfügen. Diese werden dann in der Datenbank als Profil/Muster für die weitere Nutzung gespeichert.
Die Anzahl der Platzhalter ist nun mal so wie sie ist und da lässt sich nichts einsparen.

Zur Frage, wie man da navigieren kann, ist die Antwort "gut", weil alle Haupt und Untermenüpunkte sinnvoll beschriftet sind.
Im Muster-Text am Cursor "rechte Maustaste" drücken, Menüeintrag auswählen, und schon hat der Anwender den gewünschten Platzhalter eingefügt.

Wenn es keine Lösung für die zickende IDE gibt, werde ich wohl oder übel das Menü zur RT erstellen müssen.

Leider erzeugt "Components to Code" das Menü nur unvollständig, es werden die Variablen, die Create und die Namen erstellt, aber die Werte für Captions, Hints, Images und OnClicks fehlen.
Werde mir also wohl eine function bauen, die alle Einträge des aktuellen Menüs durchläuft und in einer sinnvollen und änderbaren Struktur speichert.
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#6

AW: bds2006 Menu Designer Limit

  Alt 11. Apr 2017, 08:46
Moin...
Zitat:
ca 800 Einträge verteilt auf etliche Untermenüs...sich statt dessen mit den Fragen nach dem Sinn des Menüs befassen.
...das mußt du dir gefallen lassen. Das ist eine ungewönliche Kostellation das man hier hinterfragen muß.
  Mit Zitat antworten Zitat
Benutzerbild von cramer
cramer

Registriert seit: 23. Jun 2004
Ort: Velbert (NRW)
108 Beiträge
 
Delphi 2006 Enterprise
 
#7

AW: bds2006 Menu Designer Limit

  Alt 11. Apr 2017, 17:11
Auf Grund von Zeitmangel bin ich jetzt bei diesem Workaround gelandet.

Delphi-Quellcode:
function MenuAddMainItem( aForm : tForm; aPopUpMenu : TPopUpMenu; aEnabled, aVisible : integer; aCaption, aHint : string; aImageIndex : integer; aOnClickEvent : TNotifyEvent; aAction : TAction; aShortCut : string ) : TMenuItem;
var xMI : TMenuItem;
begin
   with aPopUpMenu do begin
      xMI := TMenuItem.Create( aForm );
      Result := xMI;
      with xMI do begin
         enabled := aEnabled = 1;
         visible := aVisible = 1;
         caption := aCaption;
         hint := aHint;
         imageIndex := aImageIndex;
         onClick := aOnClickEvent;
         shortCut := TextToShortCut( aShortCut );
         action := aAction;
      end;
      Items.Add( xMI );
   end;
end;

function MenuAddSubItem ( aForm : tForm; aItemParent : TMenuItem; aEnabled, aVisible : integer; aCaption, aHint : string; aImageIndex : integer; aOnClickEvent : TNotifyEvent; aAction : TAction; aShortcut : string ) : TMenuItem;
var xMI : TMenuItem;
begin
   xMI := TMenuItem.Create( aForm );
   Result := xMI;
   with xMI do begin
      enabled := aEnabled = 1;
      visible := aVisible = 1;
      caption := aCaption;
      hint := aHint;
      imageIndex := aImageIndex;
      onClick := aOnClickEvent;
      shortCut := TextToShortCut( aShortCut );
      action := aAction;
   end;
   aItemParent.Add( xMI );
end;

procedure TMV.FormCreate( Sender : TObject );
var
   // Max Tiefe 5 Menu Ebenen
   xMi1, xMi2, xMi3, xMi4, xMi5 : TMenuItem;
begin
   // 2017.04.11.uc - Workaround PopUpMenu verliert Einträge
   // (pop3 ist im form definiert und zugeordnet)
   xMi1 := MenuAddMainItem( self, Pop3, 1, 1, 'Intern'         , '-'       , 22 , nil , nil, '' );
   xMi2 := MenuAddSubItem ( self, xMi1, 1, 1, 'Adressanschrift', 'Adresse' , 98 , A_Vari, nil, '' );
   xMi2 := MenuAddSubItem ( self, xMi1, 1, 1, 'Adresszeile'    , 'Zeile'   , -1 , A_Vari, nil, '' );
   xMi2 := MenuAddSubItem ( self, xMi1, 1, 1, 'Brief'          , 'Brief'   , -1 , A_Vari, nil, '' );
   xMi2 := MenuAddSubItem ( self, xMi1, 1, 1, 'Adresse'        , ''        , -1 , nil , nil, '' );
   xMi3 := MenuAddSubItem ( self, xMi2, 1, 1, 'Anrede'         , 'Anrede'  , -1 , A_Vari, nil, '' );
   xMi3 := MenuAddSubItem ( self, xMi2, 1, 1, 'Vorname'        , 'VorName' , -1 , A_Vari, nil, '' );
   xMi3 := MenuAddSubItem ( self, xMi2, 1, 1, 'Name/Firma'     , 'NachName', -1 , A_Vari, nil, '' );
   xMi2 := MenuAddSubItem ( self, xMi1, 1, 1, '-'              , ''        , -1 , nil , nil, '' );
end;
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.622 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: bds2006 Menu Designer Limit

  Alt 11. Apr 2017, 19:40
Wie schon gesagt, eine kleine integrierte Datenbank wäre für den Fall ideal gewesen. So ließe sich das viel einfacher pflegen.

Aber wenn dir der deutlich aufwendigere Weg besser gefällt, ist das ja deine Sache.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.616 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: bds2006 Menu Designer Limit

  Alt 11. Apr 2017, 20:13
Leider erzeugt "Components to Code" das Menü nur unvollständig, es werden die Variablen, die Create und die Namen erstellt, aber die Werte für Captions, Hints, Images und OnClicks fehlen.
Ich nehme an, mit "Components to code" ist die GExperts-Funktionalitaet gemeint?

Ja, stimmt, mit Menues kommt der nicht gut klar. Habe ich gerade mal erweitert, jetzt klappts auch mit TMainMenu und TPopupMenu.
Thomas Mueller

Geändert von dummzeuch (11. Apr 2017 um 20:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von cramer
cramer

Registriert seit: 23. Jun 2004
Ort: Velbert (NRW)
108 Beiträge
 
Delphi 2006 Enterprise
 
#10

AW: bds2006 Menu Designer Limit

  Alt 12. Apr 2017, 01:13
Danke für die Infos, bei dem eigentlichen Problem der verlorengehenden Einträge handelt es sich ja möglicherweise um einen Bug/Speicherproblem der IDE, bei der ein Fix wohl nicht mehr zu erwarten ist

@dummzeuch
Wann ist denn mit der überarbeiteten GExpert Version zu rechnen, aktuell finde ich die 2012-03-04?

Bei der Gelegenheit, ist es mit wenig Aufwand zu realisieren, dort "Align lines" auf mehrere Spalten aufzuboren?
Für solche Kommageschichten im Quelltext, wie oben "xMi1 := ....", nutze ich bisher immer "Sublime3" und das Package "AlignTab"
Erfahrung ist etwas, daß man erst bekommt, kurz nachdem man es dringend gebraucht hätte.
  Mit Zitat antworten Zitat
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 23:46 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