Kontextmenüs
Kontextmenüs (Function Set) können den folgenden Elementen zugeordnet werden:
- Datenklassen
- Diagramm-Element
- Listen-Element
- Daten-Edit-Element
- Multi-Data-Edit-Element
- Selektions-Element
- Baum-Element
Eigenschaften Kontextmenü
Bereich | Eigenschaft | Wert |
---|---|---|
Allgemeines | Anhängen an Kontextmenü der Partner-Kennung (AppendToPartnerId, AppendToPackageId) | Partner- und Lösungs-Kennung des gleichnamigen Kontextmenüs, an das diese Definition angehängt werden soll (siehe auch Anhängen an…) |
Kommentar (Comment) | Beliebiger Kommentar zur Dokumentation. Der Kommentar wird nicht zum Client übertragen und dient nur zur Dokumentation von Besonderheiten, Hinweisen, etc. Bei Auslieferung/Weitergabe der Lösung wird der Kommentar eingeschlossen, so dass der Empfänger ihn im AppDesigner sieht. |
Eigenschaften Kontextmenüeintrag
Bereich | Eigenschaft | Wert |
---|---|---|
Allgemeines | Funktionstitel (Title) | Titel der Funktion (für Kontextmenü bzw. Optionen-Button, ist für den Anwender sichtbar) |
Funktionskurztitel (TitleShort) | Kurztitel der Funktion (für Schaltflächen, ist für den Anwender sichtbar) | |
Tastenkürzel (FunctionShortcut) | Tastenkürzel zum Aufruf der Kontextmenüfunktion über die Tastatur |
Tastenkürzel: Erlaubt sind alle Buchstaben, jeweils in Kombination mit Strg oder Strg-Umschalt. Zwischen Strg bzw. Strg-Umschalt und dem Buchstaben muss ein Bindestrich vorhanden sein. Strg-A, Strg-C, Strg-V, Strg-X und Strg-Z sind nicht erlaubt, sowie Entf und Einfg (diese sind nur in Multi-Data-Edit-Elementen wirksam und immer für das Löschen bzw. Einfügen von Zeilen zu verwenden).
Wird das Kontextmenü in einem Daten-Edit-Element mit Datensatz (Stammdatendialog) verwendet, darf die Tastenkombination Strg-S nicht verwendet werden, da diese Kombination das Speichern des Datensatzes auslöst.
Bereich | Eigenschaft | Wert |
---|---|---|
Allgemeines | Elternmenü (Parent) | Definition von Untermenüs:
(Untermenüs nur im Kontextmenü; bei Listen- und Diagramm-Part-Schaltflächen wird das übergeordnete Menü ignoriert; aktuell werden zwei Menüebenen, d.h. Haupt- und Unterebene unterstützt) |
Berechtigungsname (PermissionName) (ab Version 9.0) | Optionaler Berechtigungsname für die Ausführungs-Berechtigung des Kontextmenüeintrages Wird nur im Kontext eines Daten-Edit-Elements und in Maste-Detail-Elementen verwendet, d.h. die Ausführungs-Berechtigung wird nur geprüft, wenn
Dies gilt auch für die Berechtigungs-Skript-Erstellung im AppDesigner. Hinweis: Die Berechtigung wird unterhalb des DEE, das den Kontextmenü-Eintrag nutzt, mit dem hier hinterlegten Berechtigungsnamen angelegt. Bei angehängten Kontextmenü-Einträgen ("AppendTo") erfolgt die Erzeugung der Berechtigung über das DEE, in welchem das Kontextmenü referenziert wird. | |
Menüeintrag anhängen? (DoAppendTo) | Soll das Attribut „Elternmenü" das Kontextmenü referenzieren, an das durch "Anhängen an…" angehängt wurde, muss es einen Dummy-Eintrag mit der entsprechenden "Position in Sortierung" geben (das sich hieraus ergebende leeren Menü wird aber nicht angezeigt) |
Beispiel
In das Untermenü „Positionen verwalten“ des Kontextmenüs der Positionen der Verkaufserfassung soll der Kontextmenüeintrag „Lagerplätze prüfen“ angehängt werden.
Folgende Metadaten sind anzulegen:
- Kontextmenü „VKBelegPositionenErfassung“ mit „Anhängen an Kontextmenü der Partner-Kennung“ = „Sage.Wawi“
- Kopieren des Kontextmenüeintrags „PositionenVerwalten“ (ist das Elternmenü des Original-Kontextmenüs) aus „VKBelegPositionenErfassung.Sage.Wawi“ und Einfügen in das Kontextmenü der eigenen Lösung. Nach dem Einfügen „Menüeintrag anhängen?“ aktivieren.
- Anlegen des Kontextmenüeintrags „LagerplatzPruefen“ mit „Funktionstitel“ und „Funktionskurztitel“ = „Lagerplatz prüfen“, „Elternmenü“ = „PositionenVerwalten“, „Menüeintrag anhängen?“ und „für Wawi?“ aktivieren, „Position in Sortierung“ = „1“
- Wählen Sie einen beliebigen Funktionsaufruf (wird erst weiter unten beschrieben), so dass Sie das Kontextmenü speichern können
Bereich | Eigenschaft | Wert |
---|---|---|
Allgemeines | Ersetzen (Replace) | Festlegung, ob ein Original mit gleichem Namen beim Anhängen ersetzt werden soll (bei Ja). Die Verwendung des Ersetzens ist nur für Ausnahmefälle gedacht. Dabei wird das Original vollständig ersetzt. Die Verantwortung dafür trägt der Entwickler der Erweiterung. Wird ein Kontextmenü-Eintrag mehrfach ersetzt, „gewinnt“ der ersetzende Kontextmenü-Eintrag, der die kleinste Partner-ID bzw. bei gleicher Partner-ID die kleinste Lösungs-Kennung hat. Bei Bedarf kann die Reihenfolge im AppDesigner angepasst werden. |
Position in Sortierung (OrderPosition) | Sortier-/Anzeigereihenfolge im Kontextmenü (Einträge, die mit „Anhängen an Kontextmenü der Partner-Kennung“ angehängt werden, werden immer nach dem letzten Kontextmenü-Eintrag angehängt) |
Neben der Verwendung eines Eintrags als Auswahlmöglichkeit des Anwenders, werden Kontextmenüeinträge auch zur internen Steuerung verwendet. Sie können einen Kontextmenüeintrag mit „Position in Sortierung“ = „0“ anlegen. Dieser Eintrag wird nicht im Kontextmenü angezeigt. In Kombination mit der Eigenschaft „Funktionsaufruf“ kann z.B. ein serverseitiger Serviceaufruf ausgeführt werden. Verwendung finden solche Kontextmenüeinträge in der Regel in Ereignissen als Makroaufruf, oder als Funktionsname in Daten-Edit-Elemente- oder Multi-Data-Edit-Elemente-Felder.
Bereich | Eigenschaft | Wert | |
---|---|---|---|
Allgemeines | Schaltflächenposition (ButtonPosition) | Funktion auf Schaltfläche <n> positionieren (0 = nicht auf Schaltfläche, Lücken sind zulässig, nur Default da vom Anwender änderbar, bei identischen Werten erfolgt die Sortierung gemäß der Reihenfolge des Einlesens) | |
Symboldatei (Icon) | Dateiname des Icons für Schaltflächen des Listen- bzw. Diagramm-Parts sowie die Kontextmenüs von Listen- und Diagramm-Elemente. Die Datei muss in „Shared\Bitmaps\UI“ liegen. Dateinamen sind ohne Erweiterung anzugeben, Standard ist hier automatisch ".png". | ||
Gruppe beginnen? (BeginGroup) | Im Kontextmenü wird vor der Funktion eine Gruppen-Trennlinie angezeigt. Bei primären Schaltflächen wird ein größerer Abstand von der vorhergehenden Schaltfläche eingefügt. Hinweis: Der Wert "Ja" wird automatisch an die jeweils (in Sortierreihenfolge) nächste Funktion des Kontextmenüs weitergereicht, falls die eigentliche Funktion aufgrund der Lizenzierungseigenschaften nicht angezeigt wird. | ||
Primäre Schaltfläche (IsPrimaryButton) | Festlegung, ob der Kontextmenüeintrag eine primäre Schaltfläche definiert (wird nur im Daten-Edit-Element beachtet). Diese Einträge erscheinen nicht im normalen Kontextmenü. Sie werden prominent (unten rechts) platziert und können nicht konfiguriert werden. | ||
Funktion | Typ (Type) | Festlegung des Typs:
Pro Kontextmenü kann ein Standard-Funktionsaufruf definiert werden. | |
Service-Name für dynamisches Menü in DLL (DynamicMenuAssemblyName) | Dienst der die Menü-Einträge des dynamischen Untermenüs ermittelt. Hier wird der Name der aufzurufenden DLL (ohne Verzeichnisname, aber mit Dateinamenerweiterung „.dll“) angegeben. Die DLL wird immer im Sage 100-Shared-Verzeichnis gesucht. | ||
Service-Klassenname für dynamisches Menü in DLL (DynamicMenuClassName) | Name der aufzurufenden Klasse | ||
Parameter für dynamisches Menü in DLL (DynamicMenuParameters) | Semikolon-separierte Liste von Feldnamen in eckigen Klammern der zur Ermittlung des dynamischen Menüs an den Server zu übergebenden Feldwerte. Nicht maskierte Feldnamen werden zur Laufzeit ignoriert. | ||
Aktivierung durch (FunctionActivationMode) | Legt fest, wie die Funktion in Abhängigkeit von den Daten des Aufrufers und den eigenen Einstellungen aktiv bzw. inaktiv geschaltet wird. Die Aktivierung einer Mehrfachselektion hat dabei folgende Auswirkungen:
|
Beispiel Erweiterungen von Kontextmenüs
Bereich | Eigenschaft | Wert |
---|---|---|
Funktion | Festlegung Aktivierung durch Feld oder Ausdruck (ActiveDefinedByField) | Inhalt je nach Elementart:
Hinweis zur Verwendung eines Ausdrucks:
Hinweis zur Datenklasse:
Behandlung des Ergebnisses:
Bei Listen-Elementen 1 bis 9 oder Feldname im zugrunde liegenden Datenkontext oder Ausdruck auf Basis des zugrunde liegenden Datenkontextes |
Tooltipp im deaktivierten Zustand (ActiveDefinedByFieldTooltipp) | Tooltipp-Text, der verwendet werden soll, wenn die Funktion inaktiv geschaltet wird. Wenn die Definition mit „=“ beginnt, wird diese als Ausdruck interpretiert (Verwendung für "variable", d.h. Daten-abhängige Textanzeigen). Der Ausdruck wird bei jedem Öffnen des Menüs im Client ausgewertet. | |
Nutzung bei Datenklassen (DataClassUsage) | Angabe des Kontextes, in welchem der Menüeintrag bei Datenklassen-Feldern verwendet werden soll. Der Menüeintrag kann in Datenklassen für Primärschlüssel, in Datenklassen für Fremdschlüssel oder immer zur Verfügung stehen. Das gleiche Kontextmenü kann damit für verschiedenartige Datenklassen-Felder genutzt werden.
Das Attribut wird nur beachtet, wenn das Kontextmenü in einer Datenklasse-Feldern verwendet wird. | |
Explizite Freischaltung? (NeedsExplicitActivation) | Die Kontextmenü-Funktion muss explizit freigeschaltet werden. Dies erfolgt durch explizite Angabe des Funktionsnamens bei der Referenzierung des Kontextmenüs. Nicht aktivierte Funktionen in Kontextmenüs werden komplett ausgeblendet. Soweit keine explizite Freischaltung erfolgt, überschreibt dies alle anderen Anzeige-Eigenschaften und führt zum Ausblenden. | |
Festlegung Freischaltung durch Funktion (ActivationDefinedByFunction) | Die Aktivierung des Kontextmenü-Eintrages wird durch die Aktivierung eines anderen Kontextmenü-Eintrags gesteuert, soweit er nicht über „Explizite Freischaltung?“ oder „Festlegung Freischaltung durch Funktion“ ausgeblendet wird. Hierdurch können sich Partner an bestehende Freischaltungen anhängen (Verkettung wird nicht unterstützt). Durch die Verwendung des Platzhalters „$Parent“ wird die Aktivierung des gleichnamigen Kontextmenüs des Kontextmenüs des Parent-Elementes übernommen. Kann nur aktiviert werden, wenn das Attribut "FunctionActivationMode" auf 20 (Aktivierung analog anderem Kontextmenü-Eintrag) gesetzt wurde. Eine zusammengefasste Beschreibung der Wirkung aller Attribute zum aktiv/inaktiv Schalten der Kontextmenü-Einträge ist beim Attribut "ActiveDefinedByField" zu finden. |
Mittels der oben aufgeführten Eigenschaften können Kontextmenüeinträge gesperrt oder nicht sichtbar geschaltet werden. Die Abarbeitung der Eigenschaften für die Status der Kontextmenüeinträge kann man mit folgenden Pseudocode beschreiben (der Return-Wert bedeutet bei True Anzeigen und bei False nicht anzeigen):
IF “NeedsExplicitActivation” AND <nicht explizit aktiviert> THEN Return FALSE
IF “ActivationDefinedByFunction“ THEN Return <Status referenzierter Kontextmenüeintrags>
IF <MDEE und mehrere Zeilen selektiert> THEN
IF <Multiselect zulässig> THEN
Return True
ELSE
Return False
END IF
END IF
IF „ActiveDefinedByField“ ist leer THEN
IF neue Zeile selektiert THEN
Return “IsActiveInNewLine”
ELSE
Return TRUE (auch wenn keine Zeile selektiert ist)
END IF
ELSE
IF Platzhalter ungleich “$Parent“ vorhanden THEN
IF neue Zeile selektiert THEN
Return FALSE
ELSEIF <keine Zeile selektiert>
Return FALSE
ELSE
Return <auswertung “ActiveDefinedByField”>
END IF
END IF
ELSE
IF neue Zeile selektiert THEN
Return <auswertung “ActiveDefinedByField”> AND “IsActiveInNewLine"
ELSE
Return <auswertung “ActiveDefinedByField”> (auch wenn keine Zeile selektiert ist)
END IF
END IF
Ist keine der Eigenschaften gesetzt oder gefüllt, dann gilt für das Sperren von Kontextmenüeinträgen folgende Regel:
Werden in den Eigenschaften „Parameter 1-6 Funktionsaufruf“ Platzhalter ($[KeyField(1-9)] oder $[FieldValue(name)]) verwendet, die Daten aus einem Datensatz (Datenquelle oder Datensatz) abfragen, dann ist der Eintrag nur freigeschaltet, wenn ein Datensatz selektiert ist, ansonsten ist der Eintrag immer freigeschaltet.
Bereich | Eigenschaft | Wert |
---|---|---|
Funktion | Funktionsaufruf pro Diagramm-Kurve? (FunctionByChartSeries) | Nur bei Diagramm-Elementen (wird bei Listen-Elementen automatisch ausgeblendet): Der Kontextmenü-Aufruf soll pro gewählte Kurve eine andere Funktionalität aufrufen. Der Menüeintrag wird automatisch durch einen Untermenüeintrag pro Kurve erweitert (Symbol vom Eltern-Eintrag, Titel ist die jeweilige Legende der Kurve). Die jeweilige Kurven-Nummer wird über den Platzhalter „$[ChartSeriesNumber]“ an die aufgerufene Funktion übergeben. Einsatz der Funktionalität z.B. im Trendvergleich-Element (Sage.System.Trendvergleich.Details). |
Funktionsaufruf (FunctionCallPartnerId, FunctionCallPackageId, FunctionCallId) | Partner-Kennung, Lösungs-Kennung und Name für den Funktionsaufruf | |
Ausführen Makro (ExecuteMacro) | Makro-Befehle, die beim Funktionsaufruf „Sage.System.MakroStarten“ auszuführen sind (Ausführung erfolgt im Kontext des jeweiligen Elementes, in dem das Kontextmenü genutzt wird, d.h. auf dessen Daten kann entsprechend zugegriffen werden). Erfolgt der Aufruf der Funktion aus einem Makro heraus, werden die lokalen Variable gemeinsam genutzt (lesend und schreibend). Beispielsweise bei verketteten Kontextmenü-Einträgen, oder beim Aufruf aus einem AfterChange-Ereignis eines Feldes. | |
Funktions-parameter | Parameter 1 Funktionsaufruf (FunctionCallParameter1) | Parameter 1 |
Parameter 2 Funktionsaufruf (FunctionCallParameter2) | Parameter 2 | |
Parameter 3 Funktionsaufruf (FunctionCallParameter3) | Parameter 3 | |
Parameter 4 Funktionsaufruf (FunctionCallParameter4) | Parameter 4 | |
Parameter 5 Funktionsaufruf (FunctionCallParameter5) | Parameter 5 | |
Parameter 6 Funktionsaufruf (FunctionCallParameter6) | Parameter 6 | |
Child-Element (ChildPartPartnerId, ChildPartPackageId, ChildPartName) | Partner-Kennung, Lösungs-Kennung und Name für das Drilldown-Element. Gültige Drilldown-Elemente sind Listen- bzw. Diagramm-Element, Daten-Edit-Element bzw. Master-Detail-Element |
In Funktionsaufrufe in Kontextmenüs werden die im Standard zur Verfügung stehenden Funktionsaufrufe, sowie die zu übergebenen Parameter beschrieben.
Bei Kontextmenüeinträge in List-Elementen (Control-Center), oder in Master-Detail-Elementen (Auskünfte) werden aktuell nur die Typen „VBA-Aufruf“ und „MakroStarten“ (siehe nachfolgende Tabelle) unterstützt.
Folgende Makrobefehle werden beim Funktionsaufruf in Kontextmenüeinträgen in Listen und Master-Detail-Elementen unterstützt:
- FestlegenLokaleVar
- AufrufenKontextMenu
- ListeAktualisieren
- DatenReferenzAktualisieren
- AufrufenDll
- DatensatzSuchen
- SelektionsdialogÖffnen
- BerichtÖffnen
- Wenn, SonstWenn, Sonst
- Fehler
- StoppMakro
- Abbruch
- FürJedenWert
- ItemCount()
- Meldungsfeld
- ProtokollierenEreignis
- FehlerMelden
- HinweisMelden
- Kommentar
- AufrufenVba
- IsEmpty(Feldreferenz)
- IsVisible(Feldreferenz)
Beim Makro „AufrufenKontextMenu“ kann ein anderer Kontextmenüeintrag und dessen Makros aufgerufen werden. Aber auch hieraus werden nur die in der Liste aufgeführten Makros ausgeführt.
In Funktionsaufrufe in Kontextmenüs werden die Parameter der einzelnen Aufruftypen beschrieben. In Platzhalter für Metadaten, die Platzhalter, mit denen Daten abgerufen werden können. Die folgende Übersicht stellt dar, welche Platzhalter im welchen Kontext als Parameterwert im Kontextmenüeintrag verwendet werden kann.
Verwendung | Funktionsaufruf | Abruf von Werten |
---|---|---|
List-Element | VBA-Aufruf | $[KeyField(1-9)] entsprechend den Schlüsselfeldern 1-9 der Datenquelle |
Child-Element eines Master-Detail-Elementes | VBA-Aufruf | $[KeyField(1-9)] entsprechend den Schlüsselfeldern 1-9 der Datenquelle $[ParentKeyField(1-9)] entsprechend den Schlüsselfeldern 1-9 der Datenquelle der Master-Liste |
Daten-Edit-Element | VBA-Aufruf | $[KeyField(1-9)] entsprechend den Schlüsselfeldern 1-9 der Datenquelle des Navigationselementes $[FieldValue(feldname)] entsprechend den Feldnamen des Datensatzes oder der Datenstruktur |
Aufruf einer VBA-Methode des Applikations-Service | [feldname] entsprechend den Feldnamen des Datensatzes oder der Datenstruktur | |
Aufruf der Execute-Methode des Data-Service | [feldname] entsprechend den Feldnamen des Datensatzes oder der Datenstruktur | |
Multi-Daten-Edit-Element | VBA-Aufruf | $[KeyField(1-9)] entsprechend den Schlüsselfeldern 1-9 der Datenquelle des Navigationselementes $[FieldValue(feldname)] entsprechend den Feldnamen des Datensatzes oder der Datenstruktur |
Aufruf einer VBA-Methode des Applikations-Service | [feldname] entsprechend den Feldnamen des Datensatzes oder der Datenstruktur | |
Aufruf der Execute-Methode des Data-Service | [feldname] entsprechend den Feldnamen des Datensatzes oder der Datenstruktur | |
Daten-Edit-Element als Bearbeitungsdialog | VBA-Aufruf | $[KeyField(1-9)] entsprechend den Schlüsselfeldern 1-9 der Datenquelle des Navigationselementes $[FieldValue(feldname)] entsprechend den Feldnamen des Datensatzes oder der Datenstruktur |
Aufruf einer VBA-Methode des Applikations-Service | [virtuellerFeldname($IndexSelected).feldname] entsprechend den Feldnamen des Datensatzes |
Bereich | Eigenschaft | Wert | |
---|---|---|---|
Lizenzierung | für Sage 100 New Client? (UseForS100NC) | Im Access-freien Client anbieten? | |
für Rewe? (UseForRewe) | Einstellung, ob der Kontextmenüeintrag in der Applikation Rechnungswesen angezeigt werden soll | ||
für Wawi? (UseForWawi) | Einstellung, ob der Kontextmenüeintrag in der Applikation Warenwirtschaft angezeigt werden soll | ||
Land (Country) | Land (additiv, -1 = alle Länder):
-1 oder jede beliebige Summe aus den Einzelwerten. Geprüft wird gegen das Land des aktuellen Mandanten | ||
Lizenz-Kürzel (LicenseTokens) | Applikationskürzel der zu prüfenden Lizenz (nur in Nicht-Sage-Lösungen verwendbar und änderbar) | ||
Lizenz-Kürzel für Sage (SageLicenseTokens) | Applikationskürzel der zu prüfenden Lizenz (nur in Sage-Lösungen verwendbar und änderbar) |
Achten Sie darauf, dass mindestens eine Lizenz-Option aktiviert ist. Hat man keine Option gewählt, dann wird der Eintrag in der Applikation nicht angezeigt und man könnte zuerst vermuten, dass eine Fehleingabe in den anderen Eigenschaften vorliegt.