In meinem Beitrag zum Erstellen eines Ribbons in EPLAN, gab es mehrfach den Wunsch eigene Untermenüs zu definieren.
Das ist leider so nicht direkt möglich.
Ich habe ein Script gebaut, dass man per Befehl im Menüband aufrufen kann.
Befehlszeile:
PopUpMenu /Items:"Item 1;TestAction;Tooltip 1|Item 2;TestAction;Tooltip 2|Item 3;TestAction;Tooltip 3"
Es werden alle Menü-Einträge übergeben, mit Text;Action;Tooltip
. In meinem Beispiel drei.
using System.Windows.Forms; using Eplan.EplApi.ApplicationFramework; using Eplan.EplApi.Base; using Eplan.EplApi.Scripting; internal class PopUpMenu { [DeclareAction("PopUpMenu")] public bool ActionPopUpMenu(ActionCallingContext acc) { // Get items string itemsString = null; acc.GetParameter("Items", ref itemsString); if (string.IsNullOrEmpty(itemsString)) { return false; } ContextMenuStrip menu = new ContextMenuStrip(); var itemsSplit = itemsString.Split('|'); foreach (var itemSplit in itemsSplit) { var split = itemSplit.Split(';'); if (split.Length < 2) { new Decider().Decide(EnumDecisionType.eOkDecision, "Wrong parameter value.", "PopUpMenu", EnumDecisionReturn.eOK, EnumDecisionReturn.eOK, "PopUpMenu", false, EnumDecisionIcon.eFATALERROR); return false; } // Create item ToolStripMenuItem menuItem = new ToolStripMenuItem(); string text = split[0]; menuItem.Text = text; // Action string action = split[1]; menuItem.Click += (sender, args) => { new CommandLineInterpreter().Execute(action); }; // Tooltip if (split.Length > 2) { string tooltipText = split[2]; menuItem.ToolTipText = tooltipText; } menu.Items.Add(menuItem); } menu.Show(Cursor.Position); return true; } [DeclareAction("TestAction")] public void ActionTest() { MessageBox.Show("Hello!"); } }
Very Ingenious! Thanks for sharing.
Danke für das schöne Beispiel Jonny.
Eine Frage habe ich dazu noch, kann man für die Items auch Icons vergeben oder geht das nur für das Menü selbst?
Danke.
Ja das würde gehen, allerdings nicht mit SVGs, wie es jetzt in EPLAN der Fall ist. Dem menu item kannst Du auch ein Bild mitgeben.
Ok, danke. Ich hatte es mit SVG’s versucht, das hat nicht geklappt. Dann wäre das auch geklärt.
Hallo! Funktioniert das auch mit 10 Menüpunkten bzw was muss man im Skript dazu ändern. Bekomme immer “Wrong parameter value”
Denke Du hast falsche Werte eingegeben. 10 Stück sollten gehen :)
Hallo Johann! Vielen Dank für deine Rückmeldung ich hab Versucht einige für mich interessante Links und auch Externe Programme einzubinden. Werde mal weiter versuchen. Leider kommt noch immer diese Meldung.
I get compilation error when running this script, is there any special instructions for executing this in plattform 2023 or later.
Should the script be OK as it is copied as example above.
Maybe the script has something missing, should it be loaded before executing the commandline? don’t understand how this is supposed to work exactly.
BR Daniel
Which error do you get?
OK, It works if you don’t run the script, should load the script then it works like it suppose to work, thats for understanding and trying to assist
BR Daniel