Listen-Element
Listen-Elemente dienen zur tabellierten Anzeige von Daten auf Basis von Datenquellen bzw. Geschäftsprozessen. Dabei können Listen-Elemente eigene Metadatenobjekte oder ein Teil von Metadatenobjekten sein.
In folgenden UI-Elementen können Listen-Elemente angezeigt oder zugeordnet werden:
- Control-Center
- Als Master- oder Detail-Liste in einem Master-Detail-Element
- Als Suchliste in einem Daten-Such-Element
- Als Navigationselement in einem Daten-Edit-Element
Eigenschaften Listen-Element
Bereich | Eigenschaft | Wert |
---|---|---|
Allgemeines | Name (Name) | Name des Listen-Elementes (für Anwender nicht sichtbar) |
Anhängen an Listen-Element der Partner-Kennung (AppendToPartnerId, AppendToPackageId) | Partner- und Lösungs-Kennung des gleichnamigen Listen-Elementes, an das diese Definition angehängt werden soll. Einsatzzwecke:
Hinweis: Anhängen ist immer einstufig, Verkettungen sind nicht möglich. | |
Ersetzen (Replace) | Festlegung, ob das Original beim Anhängen an ein Listen-Element 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. In der Folge werden an das Original angehängte Listen-Elemente nicht mehr beachtet. Soll angehangen werden, muss an das ersetzende Listen-Element angehangen werden. Berechtigungen des Originals werden ebenfalls nicht mehr beachtet. Es sind eigene Berechtigungen zu definieren. Wird ein Listen-Element mehrfach ersetzt, „gewinnt“ das ersetzende Listen-Element, das die kleinste Partner-ID bzw. bei gleicher Partner-ID die kleinste Lösungs-Kennung hat. Bei Bedarf kann die Reihenfolge im AppDesigner angepasst werden. | |
Titel (Title) | Titel des Listen-Elementes (für Anwender sichtbar) | |
Titelerweiterung für Child-Elemente (ChildTitleExtension) | Titel-Erweiterung (wird mit Leerzeichen getrennt und in Klammern an den Titel angehängt; steht bei Verwendung des Elementes im Control-Center nicht zur Verfügung) Beim Anzeigen werden folgende Platzhalter ausgewertet:
Wird typischerweise verwendet, um voreingestellte Filter, die für den ganzen Dialog gültig sind, anzuzeigen. Beispielsweise:
| |
Beschreibung (Description) | Formatierter Erläuterungstext des Elementes zur Anzeige im Element-Einfüge-Dialog des Control-Centers. | |
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. | |
Referenzen | Selektionsdialog (SelectionPartPartnerId, SelectionPartPackageId, SelectionPartName) | Partner-Kennung, Lösungs-Kennung und Name des Selektionselementes. Dieses Element wird clientseitig für das Listen-Element "inplace" verwendet, ähnlich einer Filterzeile. Die Änderung eines Feldwertes bewirkt einen sofortigen Refresh der Daten, falls das Selektions-Element-Feld entsprechend gekennzeichnet ist (siehe Feld-Eigenschaft der Felder des Selektionsdialoges "Automatisch aktualisieren?"). Die Werte werden ignoriert, wenn das Listen-Element als Unterelement in einem Selektions-Element-Feld verwendet wird. |
Daten | Datenquelle (DataSourcePartnerId, DataSourcePackageId, DataSourceName) | Partner-Kennung, Lösungs-Kennung und Name für die verwendete Datenquelle. |
Sortierbar? (CanSort) | Bei Nein ist das komplette Listen-Element nicht sortierbar (greift auch für benutzerdefinierte Felder, was durch Leerlassen von “Sortierung“ eines Datenquellenfeldes nicht möglich ist). | |
Darstellung | Höhe (Pixel) (High) | Standard-Höhe des Elementes in Pixel (Wertebereich 80-760) |
Minimum-Höhe (Pixel) (MinimumHeigh) | Minimale Höhe in Pixel (Wertebereich 80-300). | |
Datenanzeige abhängig von Schlüssel (DisplayDataOnKey) | Die Daten werden nur angezeigt, wenn der referenzierte Schlüssel ("Schlüsselfeld 1-9" der Datenquelle) ungleich 0 ist. Das Schlüsselfeld muss vom Datentyp Integer sein. | |
Anzeigetext bei Datenunterdrückung (DataReplacementMessage) | Meldung, die anstelle der Daten angezeigt wird, wenn diese aufgrund von "Datenanzeige abhängig von Schlüssel" nicht angezeigt werden (kurze Formulierung ohne Satzform und ohne Punkt). | |
Aktivierung Zeile durch Feld (ActivationDefinedByField) ab 9.0.5 umbenannt in Verwendung durch Feld steuern (UsageDefinedByField) | Feldname oder Ausdruck Gültige Werte:
Hinweis zur Verwendung des Feldwerts oder des Ausdrucks:
Behandlung des Ergebnisses:
|
Anzeige Seriennummern in der Bildschirmauskunft "Artikelauskunft Verkauf"
Manchmal kann es nötig sein, dem Anwender den Unterschied zwischen "es sind keine Daten vorhanden" und "es können keine Daten vorhanden sein" auch im UI ersichtlich zu machen. Ein Beispiel ist die Nachweispflicht eines Artikels. Werden Seriennummern und/oder Chargen eines Artikels in einem Listen-Element angezeigt und es können beliebige Artikel (also auch Artikel ohne Nachweispflicht) ausgewählt werden, dann sollte bei Artikeln ohne Nachweispflicht ein entsprechender Hinweis kommen (und kein leeres Listen-Element).
In der Datenquelle zu dem Detail-Listen-Element "Seriennummern" (dtsVKArtikelSeriennr.Sage.Wawi) ist das Feld, welches die Nachweispflicht eines Artikels definiert, mit aufgenommen und als Schlüsselfeld hinterlegt.
Im Listen-Element "lstVKArtikelSeriennr.Sage.Wawi" wird sich in der Eigenschaft "Datenanzeige abhängig von Schlüssel" darauf bezogen.
Ist der Wert im Feld "Nachweispflicht" = 0, wird in der Bildschirmauskunft kein leeres Register (also ein Register mit Spaltenüberschriften, aber ohne Datensatz) angezeigt, sondern ein Register mit einem Informationssymbol und dem Text aus der Eigenschaft "Anzeigetext bei Datenunterdrückung".
Bereich | Eigenschaft | Wert |
---|---|---|
Kontextmenü | Kontextmenü (FunctionSetPartnerId, FunctionSetPackageId, FunctionSetName) | Partner-Kennung, Lösungs-Kennung und Name für das Kontextmenü. |
Freizuschaltende Funktionen (FunctionSetActivationList) | Liste explizit freizuschaltender Kontextmenü-Funktionen (siehe auch die Eigenschaft "Explizite Freischaltung?" der Kontextmenüeinträge) |
Eine explizite Freischaltung kann dann sinnvoll sein, wenn man gleiche Funktionsaufrufe in unterschiedlichen Metadaten-Elemente in einem Kontextmenü freischalten will, oder ein Funktionsaufruf enthalten ist, der auch im aufgerufen Element vorhanden ist, also ein Aufruf auf sich selbst vermeiden will. Ein kleines (theoretisches) Beispiel soll dies verdeutlichen. Legen Sie folgende Metadaten an:
Anlage der Datenquellen
- dtsArtikel
- Feld "Artikelnummer"
- "SQL-Abfrage" = "KHKArtikel.Artikelnummer"
- Feld "AuspraegungID"
- "SQL-Abfrage" = "KHKArtikelVarianten.AuspraegungID"
- "Datentyp" = "Integer"
- Feld "Matchcode"
- "SQL-Abfrage" = "KHKArtikel.Matchcode"
- "SQL-Tabellen" = "KHKArtikel INNER JOIN KHKArtikelVarianten ON (KHKArtikel.Mandant=KHKArtikelVarianten.Mandant AND KHKArtikel.Artikelnummer=KHKArtikelVarianten.Artikelnummer)"
- "SQL-Where-Bedingung" = "KHKArtikel.Mandant=$[Mandant]"
- "Sortieren nach Feld" = "Artikelnummer"
- "Schlüsselfeld 1" = "Artikelnummer"
- "Schlüsselfeld 2" = "AuspraegungID"
- Feld "Artikelnummer"
- dtsKunden
- Feld "Kto"
- "Feldtitel" = "Kunden"
- Feld "Matchcode"
- "SQL-Tabellen" = "KHKKontokorrent"
- "SQL-Where-Bedingung" = "Mandant=$[Mandant] AND KtoArt='D'"
- "Sortieren nach Feld" = "Kto"
- "Schlüsselfeld 3" = "Kto"
- Feld "Kto"
- dtsArtikelUndKunden mit Assistent "Tabelle importieren" mit Tabelle = "KHKArtikelKunden" und Übernahme der Felder "Artikelnummer", "AuspraegungID", "Bezeichnung1", "Kunde" und "Referenznummer"
- "Titel" = "kundenspezifische Artikel"
- "Feld Bezeichnung1"
- "Feldtitel" = "Bezeichnung 1"
Anlage der Listen-Elemente mit dem Assistenten "Datenquelle zuordnen" für "lstArtikel" mit "dtsArtikel", "lstKunden" mit "dtsKunden" und "lstArtikelUndKunden" mit "dtsArtikelUndKunden"
- Nacharbeit lstArtikel
- "im Control-Center verfügbar?" aktivieren
- "für Wawi" aktivieren
- Feld "AuspraegungID"
- "Sichtbarkeit" = "Versteckt"
- Nacharbeit lstKunden
- "im Control-Center verfügbar?" aktivieren
- "für Wawi" aktivieren
- Nacharbeit lstArtikelUndKunden
- "Titel" = "kundenspezifische Artikel"
- "im Control-Center verfügbar?" aktivieren
- "für Wawi" aktivieren
- Feld "AuspraegungID"
- "Sichtbarkeit" = "Versteckt"
Anlage des Kontextmenüs "ArtikelUndKunden"
- Anlage des Kontextmenüeintrags "Artikelstamm"
- "Funktionstitel" = "Artikelstamm"
- "Funktionskurztitel" = "Artikelstamm"
- "Position in Sortierung" = "1"
- "Explizite Freischaltung?" aktivieren
- "Funktionsaufruf" = "gbOpenStammdatenArtikel.Sage.Wawi"
- "Parameter 1 Funktionsaufruf" = "$[KeyField(1)]"
- "Parameter 2 Funktionsaufruf" = "$[KeyField(2)]"
- "für Wawi?" aktivieren
- Anlage des Kontextmenüeintrags "Kundenstamm"
- "Funktionstitel" = "Kundenstamm"
- "Funktionskurztitel" = "Kundenstamm"
- "Position in Sortierung" = "2"
- "Explizite Freischaltung?" aktivieren
- "Funktionsaufruf" = "gbOpenStammdatenKontokorrent.Sage.System"
- "Parameter 1 Funktionsaufruf" = "1"
- "Parameter 2 Funktionsaufruf" = """"
- "Parameter 3 Funktionsaufruf" = "$[KeyField(3)]"
- "für Wawi?" aktivieren
Hinterlegen Sie im Listen-Element "lstArtikel" das Kontextmenü "ArtikelUndKunden"
- "Freizuschaltende Funktionen" = "Artikelstamm"
Hinterlegen Sie im Listen-Element "lstKunden" das Kontextmenü "ArtikelUndKunden"
- "Freizuschaltende Funktionen" = "Kundenstamm"
Hinterlegen Sie im Listen-Element "lstArtikelUndKunden" das Kontextmenü "ArtikelUndKunden"
- "Freizuschaltende Funktionen" = "Artikelstamm", "Kundenstamm"
Fügen Sie die drei Elemente dem Control-Center hinzu und überprüfen Sie die Kontextmenüs der drei Listen.
Bei der Zusammenstellung der Kontextmenüeinträge müssen bei Übergabe von Datenquellenschlüsselfeldern die Nummern vorher festgelegt werden. Aus Sicht der Datenquelle "dtsKunden" ist es nicht zwingend notwendig das Feld "Kto" in das Schlüsselfeld 3 einzutragen. Da aber der Kontextmenüeintrag "Kundenstamm" im Kontextmenü nach dem Eintrag "Artikelstamm" kommt und dieser bereits Schlüsselfeld 1 und 2 belegt, muss das Feld "Kto" in Schlüsselfeld 3 eingetragen werden. Müssen Daten an den Funktionsaufruf übergeben werden, ist man aufgrund der Anzahl der Schlüsselfelder in der Datenquelle in der Zusammenstellung von gemeinsamen Kontextmenüeinträgen, beschränkt.
Bereich | Eigenschaft | Wert |
---|---|---|
Drag&Drop (ab Version 9.0) | Titel Drop-Bereich (DropzoneTitle) | Der Titel des Drop-Bereichs des Elementes. Darunter ist ein Bereich zu verstehen, in den per Drag&Drop-Aktion etwas abgelegt werden kann. Der Drop-Bereich des Elementes wird angezeigt, wenn der Titel definiert ist. Wenn als Drop-Formatname "FileDrop" eingetragen ist, wird an den Titel des Drop-Bereichs automatisch der Link "oder auswählen" angehängt. Wird der Link ausgewählt, wird automatisch ein Datei-Öffnen-Dialog angezeigt. Der Titel kann bei angehängten Listen-Elementen (siehe "AppendToPartnerId" und "AppendToPackageId") definiert werden. Der Titel wird nach aufsteigenden Partner- und Lösungs-Ids an den Titel angehängt (außer Dubletten). |
Drop-Formatnamen (DropFormats) | Definiert eine Semikolon-separierte Liste von reservierten Namen, die angeben welche Datenformate auf dem Drop-Bereich abgelegt werden können. Unterstützte Formate:
Hinweis: Alle Formatnamen aus "System.Windows.DataFormats" sind reserviert für System-seitige Erweiterungen. Wenn "DropzoneTitle" definiert ist, muss mindestens ein Format angegeben werden. Bei angehängten Listen-Elementen (siehe "AppendToPartnerId" und "AppendToPackageId") können weitere Formate definiert werden, die aber nur behandelt werden, wenn nicht bereits | |
Drop-Ausgangs-Verzeichnis (DropInitialDirectory) | Hier kann ein Ausgangs-Verzeichnis für den Datei-Öffnen-Dialog (Drop-Format "FileDrop") angegeben werden. Ist dieses Attribut leer, wird das Desktop-Verzeichnis geöffnet. Sinnvollerweise werden hier die zur Verfügung stehenden Platzhalter ("$[AppData]", etc.) verwendet. Insbesondere eignen sich hier "$[Temp]" und "$[UserProfile]". Bei angehängten Listen-Elementen (siehe "AppendToPartnerId" und "AppendToPackageId") können weitere Verzeichnisse definiert werden, die aber nur behandelt werden, wenn nicht bereits für das entsprechende Format ein Verzeichnis definiert wurde. | |
Aktualisierung | Aktualisierungsbenachrichtigungen (RefreshNotifications) | Liste der behandelten Aktualisierungsbenachrichtigungen ("Aktualisierungsbenachrichtigung“: sendet die Applikation eine Aktualisierungsbenachrichtigung, werden die Listen-elemente und Links, die diese Aktualisierungsbenachrichtigung enthalten, aktualisiert). Die spezielle Aktualisierungsbenachrichtigung "$[PartGuid]“ dient dazu, dass genau die Listen-Element-Instanz mit der entsprechenden Guid aktualisiert wird. Die Aktualisierung erfolgt aus VBA. Für die Aktualisierung einer Bildschirmauskunft ist der Funktionsaufruf gbSendAuskunftNotification.Sage.System zu verwenden. Der Name der Aktualisierungsbenachrichtigung wird in Parameter 1 des Kontextmenüeintrags eingetragen. Sollen Listen-Elementen im Control-Center aktualisiert werden, so ist die Funktion gbSendControlCenterNotification zu verwenden. Der Funktionsaufruf muss in der eigenen Lösung angelegt werden. Der Name der Aktualisierungsbenachrichtigung (z.B. $[PartGuid]) wird in Parameter 1 des Kontextmenüeintrags eingetragen. Die Aktualisierung ist identisch mit dem Aktualisieren durch den entsprechenden Button im Element. Eine eventuell vorhandene Selektion wird entfernt. Die Werte werden ignoriert, wenn das Listen-Element als Unterelement in einem Selektions-Element-Feld verwendet wird. |
automatische Aktualisierung (Refresh) | Automatische Aktualisierung (in Minuten, Wertebereich: -1 bis 120):
Aus Performance-Gründen sollte man diese Eigenschaft sparsam einsetzen. Die Werte werden ignoriert, wenn das Listen-Element als Unterelement in einem Selektions-Element-Feld verwendet wird. | |
Ereignisse | Beim Öffnen des Elementes (OnOpenPart) (Ab Version 9.0.4) | Makros, die beim Öffnen des Elementes aufgerufen werden sollen (Daten stehen noch keine zur Verfügung). Wird typischerweise verwendet, um einmalig Daten-unabhängige Einstellungen zu lesen (Dialog-Variable mit zwei Unterstreichungszeichen ("__") am Anfang verwenden; diese stehen anschließend auch Client-seitig zur Verfügung, z.B. im "OnCurrent"-Makro) oder Spalten ein- und auszublenden. Anwendungsbeispiele:
Das Ereignis wird auf Server-Seite ausgelöst; das Ereignis kann bei angehängten Listen-Elementen (siehe "AppendToPartnerId" und "AppendToPackageId") definiert werden, um zusätzliche Makros ausführen zu lassen. |
Bei Drop (OnDrop) (ab Version 9.0) | Das Makro wird aufgerufen, wenn der Inhalt einer Drag&Drop-Aktion auf die Dropzone fallen gelassen wird oder der Link "oder auswählen" angeklickt wurde (in diesem Fall wird vorher noch der Datei-Öffnen-Dialog aufgerufen, um die Dateien zu ermitteln). Das Ergebnis kann mit den Funktionen "GetDropFormat()" und "GetDropValue()" abgerufen werden. Die weitere Verarbeitung obliegt dem Applikations-Entwickler, d.h. ist über das Makro zu realisieren. | |
Lizenzierung | im Control-Center verfügbar? (IsAvailableForControlCenter) | Steht das Element zum Einfügen im Control-Center zur Verfügung? Nur dann wird es im Einfügedialog angeboten. |
für Rewe? (UseForRewe) | Steht das Element im Rechnungswesen zur Verfügung? | |
für Wawi? (UseForWawi) | Steht das Element in der Warenwirtschaft zur Verfügung? | |
für WebClient? (UseForWebClient) | Steht das Element im Web-Client zur Verfügung? | |
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) |
Eigenschaften Listen-Element-Felder
Bereich | Eigenschaft | Wert |
---|---|---|
Allgemeines | Feldname (Name) | Name des Feldes |
Feld-Attribute anhängen? (DoAppendTo) | Sollen Eigenschaften an das gleichnamige Feld der in "Anhängen an..." referenzierten Listen-Elementes angehängt werden? Einsatzzweck für Standardfelder:
Einsatzzweck für benutzerdefinierte Felder siehe Anhängen an… | |
Funktionalität (Functionality) | Funktionalität des Feldes:
| |
Darstellung | Spaltennummer (Position) | Standard Spaltennummer Bei Feldern mit angehängten Feld-Attributen wird ein im Original-Feld definierter Wert 0 überschrieben (beim Anhängen aus mehreren Lösungen heraus aber nur für die Lösung mit der niedrigsten Partner-Lösungs-ID). Hierdurch können nicht positionierte Felder (auch benutzerdefinierte Felder) explizit positioniert werden. |
Breite (Pixel) (Width) | Standardbreite in Pixel (Wertebereich 10-600) | |
Sichtbarkeit (Visibility) | Sichtbarkeit der Spalte:
Diese Einstellung steuert das Datenvolumen und damit auch die Performance der Liste:
Hinweis zu technisch erforderlichen Spalten:
Hinweis zu nicht lizensierten Spalten:
Hinweis zu Spaltennamen in Ausdrücken oder Makros:
Bei Feldern mit angehängten Feld-Attributen wird der Wert des Original-Feldes überschrieben (beim Anhängen aus mehreren Lösungen heraus aber nur für die Lösung mit der niedrigsten Partner-/Lösungs-ID). Die Sichtbarkeit "Versteckt" kann nicht überschrieben werden. | |
Ausrichtung (Alignment) | Ausrichtung:
Bei Sage werden immer die Standard-Werte verwendet, abhängig vom „Datentyp“ in der Datenquellen-Definition:
| |
Ampelfunktion | Ampeltyp (TrafficLight) | Ampeltyp:
"gemäß Ausrichtung" bedeutet, dass bei linksbündiger Feldausrichtung die Ampel hinter dem Wert und bei rechtsbündiger Feldausrichtung die Ampel vor dem Wert steht. Die Definition darf nur einmal pro Listen-Element vorkommen und wird für die Datentypen Boolean, indizierter String und indiziertes Bild nicht berücksichtigt. |
Tendenz Ampel (TrafficLightValuation) | Tendenz Ampel:
| |
Grenzwert Ampel-Grün (TrafficLightLimitGreen) | Standard für Grenzwert für Ampel-Grün Eingabe nur, wenn Tendenz Ampel 1 (Grenzwerte, große Werte) oder 2 (Grenzwerte, kleine werte) ist, Eingabe ist dann erforderlich | |
Grenzwert Ampel-Grün inklusive? (IsTrafficLightLimitGreenInclusive) | Ist der Grenzwert noch grün, d.h. inklusive? Eingabe nur, wenn Tendenz Ampel 1 (Grenzwerte, große Werte) oder 2 (Grenzwerte, kleine werte) ist, Eingabe ist dann erforderlich | |
Grenzwert Ampel-Gelb (TrafficLightLimitYellow) | Standard für Grenzwert für Ampel-Gelb Eingabe nur, wenn Tendenz Ampel 1 (Grenzwerte, große Werte) oder 2 (Grenzwerte, kleine werte) ist, Eingabe ist dann erforderlich. | |
Grenzwert Ampel-Gelb inklusive? (IsTrafficLightLimitYellowInclusive) | Ist der Grenzwert noch gelb, d.h. inklusive? Eingabe nur, wenn Tendenz Ampel 1 (Grenzwerte, große Werte) oder 2 (Grenzwerte, kleine werte) ist, Eingabe ist dann erforderlich. | |
Lizenzierung | 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) |