2 Stimmen

Dynamische Menüs/Aktionen in Delphi

Ich habe eine Anwendung mit einem Untermenü von Orten, die jeweils eine eigene Tastenkombination haben. Bis jetzt ist dieses Untermenü statisch, aber oft besteht die Notwendigkeit, einen neuen Ort zum Menü hinzuzufügen und einen neuen Shortcut zuzuweisen. Die Anwendung hat eine Einheit Clientdata, die eine TActionManager enthält, die die benötigten Aktionen für Schaltflächen, Menüs und auch das Untermenü ich erwähnt hält.

Ich möchte also, dass dieses Untermenü während der Laufzeit geändert werden kann. Alle Orte werden in der Datenbank gespeichert. Ich denke, das Untermenü sollte noch Aktionen im Actionmanager haben.

Darüber hinaus gibt es einen Shortcut-Editor für alle Aktionen, so dass jeder Benutzer seine eigenen persönlichen Shortcuts haben kann. Diese Shortcuts werden in einer Textdatei im persönlichen Dateiverzeichnis gespeichert.

Es gibt 3 Stellen, die geändert werden sollten.

  • System-Modul. Hier kann ich Orte in der Datenbank hinzufügen, bearbeiten und löschen, die sich im Untermenü befinden werden.
  • Aktionsmanager. Er enthält alle Aktionen für das Untermenü. Er enthält auch Verknüpfungen und kann Verknüpfungen aus einer Textdatei laden/speichern.
  • Modul planen. Es verwendet das Untermenü für Orte. Es sollte das Untermenü aus Orten in der Datenbank erstellen und ihnen die richtige Verknüpfung zuweisen.

Ich habe mit der Umsetzung begonnen, aber ich bin mir nicht sicher, ob ich auf dem richtigen Weg bin. Es ist wichtig, dass die Daten im ActionManager synchronisiert sind, wenn die Liste der Orte im Datenmodul bearbeitet wird. Ich bin mir nicht sicher, wie man im ActionManager zur Laufzeit Aktionen hinzufügen, bearbeiten oder löschen kann. Ich habe dies nur in der Entwurfszeit getan.

Andere Kommentare und mögliche Verbesserungen sind willkommen!

Mit freundlichen Grüßen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X