Skip to main content
Skip table of contents

Individualmenüs per Codeblock einbinden / registrieren


Überblick

Mit der neuen Klasse TbeCbCustomMenuManager lassen sich Individualmenüs via Codeblock einbinden/registrieren.

Für die einfache Anwendung stehen ab dem basic-package 3.6.3 neue GMU-Funktionen zur Verfügung.

Folgende Objekte können als Container für das Individualmenüobjekt angesprochen werden:

  • BE-Haupttoolbar und deren Untermenüs

  • Untermenüs in Standardmasken

  • Toolbars in Standardmasken

  • Browser

Vorteile dieser Vorgehensweise:

  • eine zentrale Stelle zum Einbinden der Menüs

  • automatische Einbindung & Update von Menüs für Standard-Packages (im _PackageLoader)

  • zielgenaue Platzierung von Menüs - jetzt z.B. auch in Untermenüs wie z.B. Bearbeiten im Artikelstamm

  • Masken: bei der Einbindung in z.B. den Artikelstamm ist die Menü-Registrierung gleichzeitig für alle Masken-Kopien des Artikelstamms wirksam

  • Browser:

    • bei der Einbindung in z.B. den Lagerkartei Browser ist die Menü-Registrierung ohne "Browser kopieren" für alle User wirksam

    • es können mehrere Menüs eingebunden werden, bei Bedarf auch in Untermenüs von Standard-Menüstrukturen

Alle Beispiele und Veranschaulichungen in dieser Anleitung basieren auf der DMS-Toolbox (Dokumentenmanagementsystem)

Vorgehensweise

Ermitteln der benötigten Funktion

Haupttoolbar

Standardmasken-Untermenüs

Standardmasken-Toolbar

Browser

Registrierung aufheben / entfernen

GMU_RegisterMenuInMainToolbar()

GMU_RegisterMenuInMenu()

GMU_RegisterMenuInMaskToolbar()

GMU_RegisterMenuInBrowser()

GMU_UnregisterIndiMenu()

Ermitteln der benötigten Parameter

Der erste Parameter gibt an, in welchem Bereich das Individualmenü eingebunden werden soll - bei einem Bereich ist der Parameter numerisch, bei mehreren übergibt man ein Array.
Zum Beispiel könnte ein Individualmenü in den Admin-Tools eingebunden werden, somit will man das evtl. im Hauptprogramm sowie in der Programmierung.

CODE
GMU_RegisterMenuInMenu(belmMain, ...)                // Nur im Hauptprogramm einbinden
GMU_RegisterMenuInMenu({belmMain, belmProg}, ...)    // Im Hauptprogramm sowie in der Programmierung einbinden


Für die meisten Parameter, wie Namen von Actions, Referenzobjekten oder Toolbars, braucht man den Codeschnipsel https://dontenwill.atlassian.net/l/cp/S3XDbiJS

Funktionsbeispiele

Funktion 1: GMU_RegisterMenuInMainToolbar() – Haupttoolbar

Hier befinden sich die Namen der Buttons sowie deren Untermenüpunkte der Haupttoolbar, z.B. im Artikelstamm (Achtung, lieber auch über's Event, ggfs. Bezeichner nicht aktuell im Confluence):

Beispiel 1: Einbindung in der Haupttoolbar nach dem Menüpunkt "Auswertung": 

CODE
GMU_RegisterMenuInMainToolbar(belmMain, '-21', 'barib_Analysis'),              // In Haupttoolbar zwischen Auswertung und Administration


Beispiel 2: Einbindung im Untermenü des Artikelstamms in der Haupttoolbar:

CODE
GMU_RegisterMenuInMainToolbar(belmMain, '-20', 'bari_Inventory',   , false, true),    // In Haupttoolbar-Untermenü des Artikelstamms

Funktion 2: GMU_RegisterMenuInMenu() – Menüs in Standardmasken

Hierfür benötigt man die ID der Maske (2) bzw. der Übergruppe einer Maske (1). Diese sieht man in der Maskenverwaltung mit aktivem Developer-Modus.

Beispiel: Einbindung in das "Bearbeiten" Menü VOR dem Menüpunkt "Serien-Nummern" (2) für alle Artikelstamm-Masken

CODE
GMU_RegisterMenuInMenu(belmMain, '-20',   'SerienNummern1',  '1000', true),    // "Bearbeiten" im Artikelstamm

Funktion 3: GMU_RegisterMenuInMaskToolbar() – Standardmasken-Toolbar

Hier benötigen wir wie für Funktion 2 (siehe oben) die ID der Maske(n).
Zusätzlich, falls eine Positionierung vor oder nach bestimmtem Button erwünscht, benötigt man als Referenzobjekt nun den Namen des Buttons zur Laufzeit, und nicht den Namen der Action – Hier gilt das selbe Vorgehen via Event "Vor Menüausführung" (siehe auch oben am Beispiel beim Ermitteln der Parameter).
Das Referenzobjekt wäre in unserem Fall der Button "bbtn_LockOrder". Die Toolbar, die wir zum Einbinden benötigen wäre "bb_Order".

Beispiel 1: Einbindung in der Toolbar der Kundenauftragsverwaltung zwischen der Auftragsnummer und dem (Ent-)Sperr-Button:

CODE
GMU_RegisterMenuInMaskToolbar(belmMain, '-20',    'bbtn_LockOrder', '10000',    'bb_Order', cmscYes, true, true),  // Toolbar Kd. Aufträge Kopf

Beispiel 2: Einbindung in der Toolbar der Stücklistenverwaltung:

CODE
GMU_RegisteRMenuInMaskToolBar(belmMain, '-20',                  '', '46000',     'bb_Main', cmscYes, false, true),  // Toolbar Stücklisten

Funktion 4: GMU_RegisterMenuInBrowser() – Browser

Für diese Funktion benötigt man die ID des Browsers sowie, falls gewünscht, der Name der Action, nach welcher das Menü eingefügt werden soll.

Beispiel 1: Einbindung im Kontextmenü der Lagerkartei:

CODE
GMU_RegisterMenuInBrowser(belmMain,     '-20',  'Kommissionen1', 'StoreFi', true),    // Im Browser "Lagerkartei" im Artikelstamm, vor Chargen/Serien-Nr

Beispiel 2: Einbindung des Individualmenüs "TEST" im Untermenü "Beleg-Archiv" im Kontextmenü der Lagerkartei, vor dem Menüpunkt "Eing.Lieferschein"

CODE
GMU_RegisterMenuInBrowser(belmMain, '2336', 'EingLieferschein1', 'StoreFi', true), // Im Browser "Lagerkartei" im Artikelstamm

Beispiel 3: Einbindung wie in Beispiel 2 & vor dem Menüpunkt "AKA-Quittung" (Werkzeugnis)

Die Menüs werden auch eingebunden, wenn das entsprechende Referenzobjekt nicht angezeigt wird (siehe folgender Screenshot, hier fehlt der "Eingangslieferschein", trotzdem sieht man den oberen Menüpunkt).

CODE
GMU_RegisterMenuInBrowser(belmMain, '2336', 'EingLieferschein1', 'StoreFi', true), // Im Browser "Lagerkartei" im Artikelstamm => Belegarchiv, vor Eingangslieferschein
GMU_RegisterMenuInBrowser(belmMain, '2336', 'Werkzeugnisse1', 'StoreFi', true),    // Im Browser "Lagerkartei" im Artikelstamm => Belegarchiv, vor AKA-Quittung

Funktion 5: GMU_UnregisterIndiMenu() – Einbinden eines Individualmenüs rückgängig machen (Unregister)

Mit dieser Funktion kann man auf Wunsch des Kunden ein durch die Toolbox erstelltes Menü wieder entfernen.
Um dies auch zentral zu halten, sollten diese Funktionsaufrufe im "_CustomInit" der Toolbox hinterlegt werden.

Hierfür benötigt man lediglich die Masken- oder Browser-ID sowie die, des Individualmenüs.
Als ersten Parameter übergibt man den Bereich, aus dem das Menü entfernt wird:
"MENU" / "MAINTOOLBAR" / "MASKTOOLBAR" / "BROWSER"

Beispiele:

CODE
GMU_UnregisterIndiMenu(belmMain, 'MENU',        '-20',    '1000'),  // Entfernt das Individualmenü DMS aus den Menüs im Artikelstamm-Masken
GMU_UnregisterIndiMenu(belmMain, 'MAINTOOLBAR', '-21'),             // Entfernt das Individualmenü des globalen DMS aus der Haupttoolbar
GMU_UnregisterIndiMenu(belmMain, 'MASKTOOLBAR', '-20',   '11000'),  // Entfernt das Individualmenü DMS aus der Toolbar der Kundenaufträge
GMU_UnregisterIndiMenu(belmMain, 'BROWSER',     '-20', 'StoreFi'),  // Entfernt das Individualmenü DMS aus dem Browser der Lagerkartei


Beispiel für die Anwendung im _PackageLoader

Für Standard-Toolboxen

In der Toolbox-Entwicklung sollten die neuen GMU-Funktionen im Package-Loader gepflegt werden, damit Menüs mit der Installation automatisch registriert werden und updatefähig sind.


Beispiel für einen _PackageLoader
DELPHI
Call('...'),

// Menü-Registrierungen - NACH den Standard-Globals, VOR den Custom-Globals
GMU_RegisterMenuInMenu(...),
GMU_RegisterMenuInMainToolbar(...),
... etc.

CallIfExists('...\InitVars'), // im Customizing können Menüs kunden-individuell de-registriert werden

Kunden-Individuelle Menüs

Individualmenüs von Customizings sollten im Event Global\Kunden\_PackageLoader zentral eingepflegt werden.

Beispiel für Global\Kunden\PackageLoader
DELPHI
Call('...'),
...

// Menü Registrierungen
GMU_RegisterMenuInMenu(...),
GMU_RegisterMenuInMainToolbar(...),

... etc.



JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.