![]() |
XML Menu dynamisch erstellen - Events
Hallo.
Im fortgang an den Beitrag von hier ![]() Für ein paar kleine plugins würde ich quasi die benötigte menustructure an die Hauptanwendung übergeben und dann die jeweiligen events dort anbinden. Ersteres - die Erstellung der Menus - ist ja soweit kein problem. XML gibt die structure ja schon vor, die muss nur noch rekursiv abgearbeitet werden. Allerdings kann ich im XML ja nur OLE variablen speichern (texte, integers etc), wie realisiere ich hier am besten die zuweisung zu den richtigen events / procedures, die die plugins an die hauptanwendung liefern sollen. Im moment fragt die HA einfach bei den Plugins nach den jeweiligen menu voraussetzungen und erstellt diese dann nach dem übergebenen XML schema.. Die frage ist jetzt wie kommt zur GUI auch noch die richtige Funktionalität (i.e. onclick events) an die richtige Stelle? Idee: Würde mir die Eigentschaft Tag irgendwas bringen, um eine solche verknüfung zu erzielen? ich weiss nur noch nicht wie... |
AW: XML Menu dynamisch erstellen - Events
Zum Zeitpunkt des Menüaufbaus kennst Du doch das Plugin und kannst auf seine Funktionen zugreifen?
Würde Dir sowas (jetzt mal so dahingesponnenens) helfen? 'ne Routine im Plugin:
Delphi-Quellcode:
Und sowas in der Art in Deinem Programm (das Menü ist bereits fertig aufgebaut):
function tMeinPlugin.Ereigniszuweisung(Menu : TMenuItem) : boolean;
begin case Menu.Tag of 0 : Menu.OnClick := OnClickRoutine0; 1 : Menu.OnClick := OnClickRoutine1; 2 : Menu.OnClick := OnClickRoutine2; 3 : Menu.OnClick := OnClickRoutine3; end; Result := Assigend(Menu.OnClick); end;
Delphi-Quellcode:
Oder:
for i := 0 to Application.Mainmenu.Items.Count - 1 do begin
if not MeinPlugin.Ereigniszuweisung(Application.Mainmenu.Items[i]) then begin // Fehlermeldung? Application.Mainmenu.Items[i].Visible := False; Application.Mainmenu.Items[i].Enabled := False; // oder was auch immer ... end; end;
Delphi-Quellcode:
Keine Ahnung, ob das auch nur ansatzweise funktioniert.
// Hier wird irgendwie aus der XML das Menü aufgebaut
AktuellesMenueItem.Caption := Wert aus der XML; AktuellesMenueItem.Tag := Wert aus der XML; MeinPlugin.Ereigniszuweisung(AktuellesMenueItem); |
AW: XML Menu dynamisch erstellen - Events
Ok super, der Anstoss hat gewirkt. Funktioniert wie gewünscht.
Danke. Jetzt noch eine frage: gibts ne möglichkeit, eine vorerstellte XML als resource einzubinden und drauf zuzugreifen, um die nicht "manuell" per code erstellen zu müssen? |
AW: XML Menu dynamisch erstellen - Events
Tutorial für das Einbinden von SQL-Dateien:
![]() Sollte analog auch mit XML und sonstigem "Textdateigedöns" funktionieren. Oder so? ![]() |
AW: XML Menu dynamisch erstellen - Events
merci
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 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