AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi XML Menu dynamisch erstellen - Events
Thema durchsuchen
Ansicht
Themen-Optionen

XML Menu dynamisch erstellen - Events

Offene Frage von "Sequitar"
Ein Thema von Sequitar · begonnen am 17. Jan 2017 · letzter Beitrag vom 17. Jan 2017
Antwort Antwort
Sequitar

Registriert seit: 8. Jan 2016
74 Beiträge
 
Delphi 10.4 Sydney
 
#1

XML Menu dynamisch erstellen - Events

  Alt 17. Jan 2017, 21:05
Hallo.
Im fortgang an den Beitrag von hier http://www.delphipraxis.net/190764-i...emoryleak.html würde ich gerne dynamische menus erstellen, die als xml beschrieben sein sollten.
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...

Geändert von Sequitar (17. Jan 2017 um 21:09 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: XML Menu dynamisch erstellen - Events

  Alt 17. Jan 2017, 21:42
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:
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;
Und sowas in der Art in Deinem Programm (das Menü ist bereits fertig aufgebaut):
Delphi-Quellcode:
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;
Oder:
Delphi-Quellcode:
// Hier wird irgendwie aus der XML das Menü aufgebaut
AktuellesMenueItem.Caption := Wert aus der XML;
AktuellesMenueItem.Tag := Wert aus der XML;
MeinPlugin.Ereigniszuweisung(AktuellesMenueItem);
Keine Ahnung, ob das auch nur ansatzweise funktioniert.
  Mit Zitat antworten Zitat
Sequitar

Registriert seit: 8. Jan 2016
74 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: XML Menu dynamisch erstellen - Events

  Alt 17. Jan 2017, 22:43
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?

Geändert von Sequitar (17. Jan 2017 um 22:46 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: XML Menu dynamisch erstellen - Events

  Alt 17. Jan 2017, 22:53
Tutorial für das Einbinden von SQL-Dateien: http://www.delphipraxis.net/49505-sq...einbinden.html

Sollte analog auch mit XML und sonstigem "Textdateigedöns" funktionieren.

Oder so? http://www.delphipraxis.net/59835-re...einbinden.html
  Mit Zitat antworten Zitat
Sequitar

Registriert seit: 8. Jan 2016
74 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: XML Menu dynamisch erstellen - Events

  Alt 17. Jan 2017, 23:15
merci
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 00:49 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