Einzelnen Beitrag anzeigen

Axti

Registriert seit: 13. Jun 2018
5 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

Externes Programm zum durchsuchen von *.dfm Dateien und Speicherung von Actions

  Alt 13. Jun 2018, 17:50
Hallo zusammen,
ich stehe vor folgendem Problem:

Ich soll ein Programm schreiben, welches die Formulardateien(*.dfm) eines Delphiprojektes durchsucht.
Dort sollen folgende Dinge gefunden und später in einer Datenbank abgelegt werden: Formularname, TActions,
Caption-Eigenschaft der TActions und die Menüstruktur in der die Actions hinterlegt sind.

Kein allzu großes Problem dachte ich mir am anfang. Irgendwann, als ich dann die Routine für das durchsuchen
der Menüstruktur geschrieben habe bin ich dann aber zu dem Problem gekommen, dass Actions, die in im
3. Untermenü liegen, nicht mehr erfasst werden.

Delphi unterscheidet leider nicht zwischen Menü und den entsprechenden MenüItems. Es gibt lediglich 'TMainMenu' und 'TMenuItem'.
Die Menüstruktur sieht also folgendermaßen aus:

MainMenu:
Datei-----------------------------Bearbeiten----------Hilfe------------
-MenuItem1----------------------MenuItem1---------MenuItem1-
-MenuItem2->MenuItem1-----MenuItem2---------MenuItem2-
-MenuItem3---MenuItem2-----MenuItem3---------MenuItem3-
------------------MenuItem3--------------------------------------------


Wenn ich also eine den Menüpfad zu einer Action haben möchte, die bei MainMenü->Datei->MenuItem2->MenuItem1 hinterlegt habe,
ist der Übergang im Code von Datei zu MenuItem2 genau der gleiche wie von MenuItem2 zu MenuItem1 im Untermenü. Mir fehlt
also ein spezifischer Anhaltspunkt der mir sagt: "Hier hat ist einer der Menüpunkte noch ein Menü". Mein bisheriger Ansatz
scheiterte genau an dem Fehlen eines solchen speziellen Anhaltspunkt. Die Variable, in der der erste Menüpunkt gespeichert wurde,
wurde jedesmal überschrieben da die Abfrage ob ein Menüpunkt vorhanden in beiden Fällen identisch sein muss, andernfalls speichert
er die Menüpunkte gar nicht ab.

Fällt jemanden eine anderer Lösungsansatz ein oder bei mir ein Denkfehler auf? Habe heute schon den ganzen Tag geknobelt und komme
nicht drauf
Alexander
  Mit Zitat antworten Zitat