Erstellung eines Control-Center-Elementes
Um ein funktionales Control-Center-Element zu erstellen benötigen Sie mindestens diese beiden Metadatenobjekte:
- Datenquelle
- Listen-Element
Um zu entscheiden, ob Sie weitere Metadatenobjekte benötigen, stellen Sie sich diese Fragen.
Frage: Können alle Daten per SQL-Anweisung bereitgestellt werden?
- Antwort ist Ja: weiter mit dem Beispiel
- Antwort ist Nein: Sie benötigen zusätzlich einen Geschäftsprozess (ein Beispiel dazu finden Sie im Kochbuch Rezept 32 des Developer Programms)
Beispiel: Projektsteuerungsauskunft
Die benötigten Daten kommen aus folgenden Tabellen:
- BPKProjektsteuerung
- Matchcode
- Projekt
- Projektleiter
- Kontakt
- Telefon
- KHKProjekte
- Projektanfang
- Auftraggeber
- Budget
- Projektmatchcode
- Projektende
- KHKKontokorrent
- Kundenmatchcode
Die SQL-Anweisung sieht damit so aus:
SELECT BPKProjektsteuerung.Matchcode AS Projektsteuerung, BPKProjektsteuerung.Projekt, KHKProjekte.Projektbeginn, BPKProjektsteuerung.Projektleiter, BPKProjektsteuerung.Kontakt, KHKProjekte.Auftraggeber, KHKProjekte.PlanBudget, BPKProjektsteuerung.Telefon, BPKProjektsteuerung.EMail, KHKProjekte.Matchcode AS Projektmatchcode, KHKKontokorrent.Matchcode AS Kundenmatchcode, KHKProjekte.Projektende, BPKProjektsteuerung.SteuerungId FROM BPKProjektsteuerung INNER JOIN KHKProjekte ON (BPKProjektsteuerung.Projekt = KHKProjekte.Projektnummer AND BPKProjektsteuerung.Mandant = KHKProjekte.Mandant) INNER JOIN KHKKontokorrent ON (KHKProjekte.Auftraggeber = KHKKontokorrent.Kto AND KHKProjekte.Mandant = KHKKontokorrent.Mandant) WHERE BPKProjektsteuerung.Mandant=123 AND KHKKontokorrent.KtoArt='D' ORDER BY BPKProjektsteuerung.Projekt, SteuerungId
Für alle Metadatenobjekte, die in einer Metadatengruppe hinterlegt werden, legen wir die Metadatengruppe „Projektsteuerung“ an.
Legen Sie in der Metadatentypgruppe „Daten“ die Datenquelle „dtsProjektsteuerungsauskunftCC“ mit dem Assistenten „SQL-Abfrage importieren“ an. Verwenden Sie die oben aufgeführte SQL-Anweisung. Ersetzen Sie die „123“ durch den Platzhalter „$[Mandant]“ (siehe Platzhalter für Metadaten), falls das System nicht automatisch diese Änderung durchführen konnte. Damit bei einer Sortierung von Daten, die innerhalb der Liste gleich sein können immer die gleiche Sortierreihenfolge angezeigt wird, geben Sie in den Eigenschaften „Ergänzende Sortierung“ und „Ergänzende Sortierung absteigend“ diese Sortierung an:
Die SQL-Anweisung finden Sie auch in der Datenquelle wieder:
Ändern Sie die Titel anhand der Liste „Feldtitel“.
Feldname | Feldtitel |
---|---|
Projektsteuerung | Projektsteuerung |
Projekt | Projekt |
Projektbeginn | Projektbeginn |
Projektleiter | Projektleiter |
Kontakt | Kontakt |
Auftraggeber | Auftraggeber |
PlanBudget | Budget |
Telefon | Telefon |
Projektmatchcode | Projektmatchcode |
Kundenmatchcode | Kundenmatchcode |
Projektende | Projektende |
SteuerungId | SteuerungId |
Eine Datenquelle kann auch einzeln verwendet werden. Daher werden die Spaltentitel in der Datenquelle hinterlegt. In der Sage 100 muss aber mindestens ein Oberflächen-Element vorhanden sein. Hier ist es ein Listen-Element. Einem Listen-Element wird eine Datenquelle zugeordnet. Sie können bei der Anlage des Listen-Elementes („lstProjektsteuerungsauskunftCC“, Metadatentypgruppe „Elemente“) einen Assistenten verwenden, so dass Sie gleich die Datenquelle („dtsProjektsteuerungsauskunftCC“) zuordnen können.
Damit die Liste im Control-Center der Warenwirtschaft eingefügt werden kann, müssen Sie die beiden Eigenschaften „im Control-Center verfügbar?“ und „für Wawi?“ aktivieren.
Wir werden später sehen, dass Schlüssel, die in der Applikation nicht sichtbar sind (in unserem Beispiel ist es das Feld „SteuerungId“ der Tabelle „BPKProjektsteuerung“) trotzdem auf dem Client zur Verfügung stehen müssen. Solche Felder werden dann in den UI-Elementen versteckt. Stellen Sie die Eigenschaft „Sichtbarkeit“ des Feldes „SteuerungId“ auf „Versteckt“.
Laut der Beschreibung im Beispiel soll es optionale Felder geben. Dies sind Felder, die beim erstmaligen Öffnen der Liste nicht angezeigt, aber über die Einstellungen in die Liste übernommen werden können. Das steuert man mit der Eigenschaft „Sichtbarkeit = Ausgeblendet“. Setzen Sie diese Eigenschaft für folgende Felder des Listen-Elementes:
- Telefon
- Projektmatchcode
- Kundenmatchcode
- Projektende
Dezimalfelder werden rechtsbündig dargestellt. Stellen Sie die Eigenschaft „Ausrichtung“ des Feldes „PlanBudget“ auf „Rechtsbündig“.
Beim Einfügen in das Control-Center haben Sie diese Zusammenhänge zwischen Metadaten und Anwendung:
Nach dem Einfügen in das Control-Center sieht die Liste so aus und es ergeben sich folgende Zusammenhänge zwischen Datenquelle und Listen-Element:
Frage: Soll der Anwender die Möglichkeit haben, die Liste mit verschiedenen Filtern zu bedienen?
- Antwort ist Ja: Sie benötigen zusätzlich eine Datenstruktur und ein Selektionselement
- Antwort ist Nein: dem Anwender stehen die Standardfilter zur Verfügung
Wir wollen zunächst die Standardfilter beschreiben und uns dann mit der Implementierung für den zusätzlich gewünschten Filter der Antwort „Ja“ beschäftigen.
Im Hamburgermenü des Listen-Elementes können Sie unter „Einstellungen“ die Filterzeile einblenden. Durch Eingabe eines Wertes können die Daten gefiltert werden. Ein so eingegebener Filter wird beim Beenden der Applikation gelöscht. Soll ein Filter dauerhaft gesetzt werden, verwendet man den Filter unter „Datensätze wählen“. Wird hier ein Filter eingestellt, so bleibt dieser auch nach Beenden und Neustart der Applikation erhalten. Der Text ändert sich in „Datensätze gewählt“. Diese beiden Filter sind der Standard in Listen-Elementen. Aufgrund der „Lebensdauer“ bezeichnet Sage die Filterzeile auch als „AdHoc-Filter“ und den Filter unter „Datensätze wählen“ als „Permanentfilter“.
Beiden Filtern ist gemein, dass sie nur auf Felder der Datenquelle filtern können und kommen damit zur Antwort „Ja“.
Die Liste soll zusätzlich nach Projektstatus, Projektgruppe, Kundengruppe und Tour/Gebiet gefiltert werden können.
Für diese Filterung benötigen wir ein Selektions-Element. Ein Selektions-Element benötigt eine Datenstruktur.
Legen Sie die Datenstruktur „strProjektsteuerungsauskunftCC“ (Daten/ Datenstrukturen/ Metadatengruppe = „Projektsteuerung“) mit folgenden Feldern an:
- „Projektstatus“
- „Projektgruppe“
- „Kundengruppe“
- „Tour“ mit dem „Feldtitel“ = „Tour/Gebiet“
Legen Sie in der vorhandenen Metadatengruppe „Projektsteuerung“ in der Metadatentypgruppe „Elemente“ ein neues Selektions-Element („selProjektsteuerungsauskunftCC“) an. Verwenden Sie dabei den Assistenten, so dass Sie gleich die Datenstruktur zuordnen können. Legen Sie das Register „ZusaetzlicheSelektion“ mit dem Assistenten „Felder importieren“ an und brechen danach den Assistenten ab.
Weisen Sie das neue Selektions-Element dem Listen-Element „lstProjektsteuerungsauskunftCC“ in der Eigenschaft „Selektions-Element“ zu. Das Listen-Element im Control-Center sieht jetzt so aus:
Legen Sie in dem Selektions-Element „selProjektsteuerungsauskunftCC“ ein zweites Register „ZusaetzlicheSelektion2“ an und verschieben (Ausschneiden und Kopieren) die Felder „Kundengruppe“ und „Tour“ in das neue Register. Das Selektions-Element sieht jetzt so aus:
Was noch fehlt ist die Verbindung der neuen Selektion zur SQL-Anweisung. Da das System nicht weiß, welcher Zusammenhang zwischen Selektion und WHERE-Bedingung der SQL-Anweisung besteht, müssen wir die WHERE-Bedingung der Datenquelle anpassen. Dies geschieht mit dem Platzhalter $[Parameter(feldname)].
Will man die SQL-Abfrage so aufbauen, dass sie mit und ohne Selektion funktioniert, dann muss man den Platzhalter $[IfParameterExists(feldname, “sql“)] verwenden. In der SQL-Anweisung für die WHERE-Bedingung können wir dann wieder die vier oben genannten Platzhalter abfragen.
Die WHERE-Bedingung der Datenquelle „dtsProjektsteuerungsauskunftCC“ sieht somit so aus:
„BPKProjektsteuerung.Mandant=$[Mandant] AND KHKKontokorrent.KtoArt='D' $[IfParameterExists(Projektstatus," AND KHKProjekte.Projektstatus = $[Parameter(Projektstatus)]")] $[IfParameterExists(Projektgruppe," AND KHKProjekte.Projektgruppe = $[Parameter(Projektgruppe)]")] $[IfParameterExists(Kundengruppe," AND KHKKontokorrent.Gruppe = $[Parameter(Kundengruppe)]")] $[IfParameterExists(Tour," AND KHKKontokorrent.Tour = $[Parameter(Tour)]")]“
Frage: Soll in den Selektionen nur eine Selektion erlaubt sein, die auf vorhandene Daten beruht?
- Antwort ist Ja: Sie benötigen zusätzliche Datenreferenzen
- Antwort ist Nein: die Filterung ist abgeschlossen
Bei einer Datenreferenz (Metadatentypgruppe „Daten“) hinterlegen Sie, wie bei den Datenquellen eine SQL-Anweisung. Die Datenreferenz hat allerdings wesentlich weniger Eigenschaften. Die Daten, die in den Grundlagen angelegt werden, werden in KHKGruppen unter verschiedene Typen gespeichert. In den Grundlagen werden die Felder „Gruppe“ (Titel „Schlüssel“) und „Bezeichnung“ angezeigt.
Der Zusammenhang zwischen der Auswahl via Datenreferenz und Ergänzung der WHERE-Bedingung der SQL-Anweisung geht über die Eigenschaft „Schlüsselfeld“ und „Priorität“ der Datenreferenz.
Legen Sie die Datenreferenzen „dtrProjektstatus“, „dtrProjektgruppe“, „dtrKundengruppe“ und „dtrTour“ unter „Daten/ Datenreferenzen/ Projektsteuerung“ mit den Datenreferenzfelder „Gruppe“ (mit dem Titel „Schlüssel“ und Sortierung „Gruppe/ Aufsteigend“) und „Bezeichnung“ (Sortierung „Bezeichnung/ Aufsteigend“) an. Geben Sie dann folgende Eigenschaften für die einzelnen Datenreferenzen ein.
- dtrProjektstatus
- „Schlüsselfeld“ = „Gruppe“
- „SQL-Tabellen“ = „KHKGruppen“
- „SQL-WHERE-Bedingung” = „Mandant = $[Mandant] AND Typ = 40043“
- „Sortieren nach Feld“ = „Gruppe“
- Datenreferenzfeld „Gruppe” mit „Priorität = 0”
- dtrProjektgruppe
- „Schlüsselfeld“ = „Gruppe“
- „SQL-Tabellen“ = „KHKGruppen“
- „SQL-WHERE-Bedingung” = „Mandant = $[Mandant] AND Typ = 40044“
- „Sortieren nach Feld“ = „Gruppe“
- Datenreferenzfeld „Gruppe” mit „Priorität = 0”
- dtrKundengruppe
- „Schlüsselfeld“ = „Gruppe“
- „SQL-Tabellen“ = „KHKGruppen“
- „SQL-WHERE-Bedingung” = „Mandant = $[Mandant] AND Typ = 11“
- „Sortieren nach Feld“ = „Gruppe“
- dtrTour
- „Titel = Tour/Gebiet“
- „Schlüsselfeld“ = „Gruppe“
- „SQL-Tabellen“ = „KHKGruppen“
- „SQL-WHERE-Bedingung” = „Mandant = $[Mandant] AND Typ = 40012“
- „Sortieren nach Feld“ = „Gruppe“
Weisen Sie den Feldern der Datenstruktur „strProjektsteuerungsauskunftCC“ in der Eigenschaft „Datenreferenz“ die entsprechende erstellte Datenreferenz zu.
Frage: Sollen für einen markierten Datensatz zusätzliche Aktionen zur Verfügung stehen?
- Antwort ist Ja: Sie benötigen zusätzlich ein Kontextmenü
- Antwort ist Nein: die Erstellung des Listen-Elementes ist abgeschlossen
Laut Beispiel soll man aus dem Listen-Element in den Kunden- und Projektstamm verzweigen könnnen. Einem Kontextmenüeintrag - wenn der Eintrag eine Aktion ausführen soll - muss immer ein Funktionsaufruf hinterlegt werden. In Funktionsaufrufe in Kontextmenüs sind die benötigten Funktionsaufrufe beschrieben. Wir benötigen für die Verzweigung in die Stammdaten folgende Funktionsaufrufe:
- System.gbFrmOpenLookup
- System.MakroStarten
Im nachfolgenden wollen wir klären, wie die für die Parameterübergabe benötigten Daten aus dem selektierten Datensatz abgerufen werden.
Das Kontextmenü ist ein UI-Element. Die Funktionsaufrufe, die in einem Kontextmenüeintrag hinterlegt werden, werden also vom Client ausgeführt. Auf dem Client wird das Ergebnis der Zusammenführung der Daten und des Listen-Elementes gerendert.
Würden also Daten (Schlüssel) benötigt, die der Anwender innerhalb der Applikation nicht sieht (z.B. die BelID für die Belege), müssen diese nicht nur in der Datenquelle, sondern auch als versteckte Felder im Listen-Element vorhanden sein.
Ein Aufruf eines Kontextmenüeintrags kann eine Aktion durchführen, die unabhängig von dem gewählten Datensatz ist (z.B. der Aufruf des Artikelstammes). Andere Aktionen bedingen aber einen gewählten Datensatz. Hierbei müssen dann Daten an die auszuführende Aktion übergeben werden, um diese ausführen zu können. Bei der Bereitstellung und Weitergabe von benötigten Schlüsseln, spielt der Funktionsaufruf eine entscheidende Rolle. Wir rufen in diesem Beispiel ein Stammdatendialog in neuer Technik (Kundenstamm) und ein Stammdatendialog in alter Technik (Projektstamm) auf.
Rufen wir ein Element in neuer Technik auf, verwenden wir einen Makro-Befehl. Um die Schlüssel zu übergeben, können wir auf alle Felder der Liste zugreifen. Bei einem Funktionsaufruf vom Typ "VBA-Aufruf" müssen wir über die Schlüsselfelder der Datenquelle gehen. Insgesamt können Daten aus neun Feldern übergeben werden. Welche Felder das sind, muss man dem System mitteilen. Dies geschieht in der Datenquelle in der Gruppe „Schlüsselfelder“.
Legen Sie unter Oberfläche/ Kontextmenüs das Kontextmenü „ProjektsteuerungsauskunftCC“ an.
Der Schlüssel des Datensatzes des Kundenstammes (recKundenstamm.Sage.System) setzt sich aus zwei Feldern (Adresse und Kto) zusammen. Die Daten für "Kto" haben wir ("Auftraggeber"). Wir fügen das Feld "Adresse" in die Datenquelle "dtsProjektsteuerungsauskunftCC" mit folgenden Eigenschaften ein:
- "SQL-Abfrage" = "KHKKontokorrent.Adresse"
- "Datentyp" = "Integer"
Importieren Sie das Feld (Fokus auf "lstProjektsteuerungsauskunftCC" und rechte Maustaste) und setzen Sie die Eigenschaft "Sichtbarbeit" auf "Versteckt".
Legen Sie ein Kontextmenüeintrag „Kundenstamm“ an. Hinterlegen Sie die folgenden Eigenschaften:
- "Funktionstitel“ und "Funktionskurztitel“ = "Kundenstamm“
- "Position in Sortierung“ = "1“
- "Schaltflächenposition“ = "1“
- "Funktionsaufruf“ = "MakroStarten.Sage.System“
- "Ausführen Makro" = Befehl: DatenEditDialogÖffnen, Parameter 1: ediKundenstamm.Sage.System, Parameter 2: [Adresse];[Auftraggeber]
- "für Wawi?“ aktivieren
Weisen Sie in der Datenquelle „dtsProjektsteuerungsauskunftCC“ in der Eigenschaft „Schlüsselfeld 1“ den Feldnamen "Projekt" zu.
Der Zugriff auf die Daten erfolgt mittels des Platzhalter $[KeyField(n)], mit n = 1-9.
Legen Sie ein Kontextmenüeintrag „Projektstamm“ an. Hinterlegen Sie die folgenden Eigenschaften:
- "Funktionstitel“ und „Funktionskurztitel“ = "Projektstamm“
- "Position in Sortierung“ = "2“
- "Schaltflächenposition“ = "2“
- "Funktionsaufruf“ = "gbFrmOpenLookup.Sage.System“
- "Parameter 1 Funktionsaufruf“ = "”frmAbfDataProjekte”“
- "Parameter 2 Funktionsaufruf“ = "$[KeyField(1)]“
- "Parameter 3 Funktionsaufruf“ = "0“
- "für Wawi?“ aktivieren
Ordnen Sie das Kontextmenü dem Listen-Element „lstProjektsteuerungsauskunftCC“ in der Eigenschaft „Kontextmenü“ zu.
Frage: Sollen 1:N-Beziehungen zu einem selektierten Datensatz angezeigt werden?
- Antwort ist Ja: Sie benötigen ein Drilldown-Element
- Antwort ist Nein: Das Control-Center-Element ist fertig
Ein Drilldown-Element ist nichts anderes wie ein Listen-Element, welches über ein Kontextmenüeintrag aufgerufen wird. Es werden also folgende Metadatenobjekte benötigt:
- Datenquelle
- Listen-Element
- Kontextmenü (ist bereits vorhanden)
Zu jedem Datensatz der Projektsteuerung können N-Termine erfasst werden. Die Daten werden in der Tabelle „BPKProjektsteuerungTermin“ gespeichert. Laut Vorgaben (siehe Beispiel) soll statt des Kürzels des Themas, die Bezeichnung aus „BPKProjektthemen“ angezeigt werden. Zusätzlich soll der Mitarbeitermatchcode („KHKMitarbeiter“) als optionales Feld angezeigt werden. Wir können die Datenquelle („dtsProjektsteuerungTermineAuskunftCC“) relativ einfach mit dem SQL-Editor erstellen.
Legen Sie die Datenquelle an, setzen Sie den Fokus auf die Datenquelle und führen Sie die benötigten Schritte im SQL-Editor aus.
Tragen Sie in der Eigenschaft „SQL-Where-Bedingung“ die Abfrage nach der MandantenId ein („BPKProjektsteuerungTermine.Mandant = $[Mandant]“). Ändern Sie die Sortierung der Datenquelle auf das Feld „Termin“. Ändern Sie die Eigenschaften „Feldtitel“ und „Priorität“ anhand des nachfolgenden Bitmaps.
Wird diese Datenquelle einem Listen-Element zugeordnet und man würde dieses Listen-Element aufrufen, würden alle Daten aus der Tabelle angezeigt werden. Uns fehlt also noch die Einschränkung auf einen selektierten Datensatz. Wird eine 1:N-Beziehung in den Metadaten hinterlegt, sprechen wir von einer Parent-Child-Beziehung. Diese Namenskonvention finden Sie in den Eigenschaften und den Platzhaltern. Bei einer Datenquelle gibt es die Eigenschaft „SQL-Where-Bedingung für Child-Elemente“. Auf die Daten des Parents kann mit dem Platzhalter $[ParentKeyField(n)] zugegriffen werden. Der Schlüssel für die Beziehung der Tabellen „BPKProjektsteuerung“ und „BPKProjektsteuerungTermine“ ist das Feld „SteuerungId“.
Hinterlegen Sie in der Datenquelle „dtsProjektsteuerungsauskunftCC“ in der Eigenschaft „Schlüsselfeld 2“ das Feld „SteuerungId“ und hinterlegen Sie in der Eigenschaft „SQL-Where-Bedingung für Child-Elemente“ der Datenquelle „dtsProjektsteuerungTermineAuskunftCC“ die Verknüpfung zwischen Parent und Child mit „SteuerungId = $[ParentKeyField(2)]“.
Legen Sie das Listen-Element „lstProjektsteuerungTermineAuskunftCC“ an und ordnen die Datenquelle „dtsProjektsteuerungTermineAuskunftCC“ mit dem Assistent "Datenquelle zuordnen" zu. Ändern Sie den „Titel“ auf „Termine“. Stellen Sie die Sichtbarkeit des Feldes „SteuerungId“ auf „Versteckt“. Stellen Sie die Sichtbarkeit der Felder „TerminNeu“, „BudgetOk“, „Memo“ und „Matchcode“ auf „Ausgeblendet“ und aktivieren Sie die Eigenschaft „für Wawi?“.
Ergänzen Sie das Kontextmenü „ProjektsteuerungsauskunftCC“ um folgenden Eintrag:
- „Funktionsname“, „Funktionstitel“ und „Funktionskurztitel“ = „Termine“
- „Position in Sortierung“ = „3“
- „Schaltflächenposition“ = „3“
- „Funktionsaufruf“ = „gbControlCenterDrilldownInPlace.Sage.System “
- „Child-Element“ = „lstProjektsteuerungTermineAuskunftCC.<partnerid>.<loesungid>“
- „für Wawi?“ aktivieren
Nach Ausführen des neuen Kontextmenüeintrags auf dem ersten Datensatz, sollte Ihr Control-Center-Element so aussehen:
Frage: Enthält die angezeigte Liste Daten, die nicht der gewünschten Anzeige entsprechen (in unserem Beispiel „Status“ und „BudgetOk“)?
- Antwort ist Ja: Sie benötigen zusätzlich String Ressourcen.
- Antwort ist Nein: Daten werden weiterhin als Integerwerte angezeigt
String-Ressourcen werden unter Grundlagen/Strings hinterlegt. Die Strings können in unterschiedlichen Sprachen angelegt werden, sind also übersetzbar. In String-Ressourcen wird darauf hingewiesen, dass Standardstrings aus den Sage-Lösungen verwendet werden sollten. Die „Ja“ und „Nein“ Strings gehören dazu. Daher werden wir sie nicht anlegen. Die Strings für das Feld „Status“ müssen wir allerdings anlegen.
Bei der Beschreibung des Beispiels, sind die Bedeutungen der Integerwerte aufgeführt. Legen Sie also folgende Strings an:
Die ID des Strings muss nicht den Werten des Datenbankfeldes entsprechen.
Die Änderung der Anzeige eines nicht bzw. schwer lesbaren Feldinhaltes geschieht in der Datenquelle. Mit dem Datentyp bestimmt man die Darstellung und die Möglichkeiten der Bearbeitung von Feldinhalten.
Selektieren Sie das Feld „Status“ und ändern Sie den Datentyp in „Indizierter String“. Die Eigenschaft „Datentyp-Ergänzung“ wird dadurch zum Pflichtfeld. Hier müssen Sie die Beziehung zwischen Datenwert und Textanzeige hinterlegen.
Führen Sie den Vorgang für das Feld „BudgetOk“ aus. Für den Index "-1" stellen sie die Stringressource "Sage.System.Common.-1" (Ja) und für den Index "0" "Sage.System.Common.0" (Nein) ein. In den Elementen von Sage, steht somit bei einer Ja/Nein-Auswahl immer „Ja“ an erster Stelle (z.B. bei den "Aktiv"-Felder in den Stammdaten).
Die Hinterlegung des Datentyps „Indiziertes Bild“ verläuft analog. In der Spalte „Wert“ hinterlegen Sie den Dateinamen des Bildes ohne Suffix. Sie müssen auf Bilder aus dem Verzeichnis ..\Shared\Bitmaps\UI verweisen (daher darf der Pfad auch nicht angegeben werden).
Damit sind die grundlegenden Zusammenhänge zwischen Datenquelle und Listen-Element erklärt. Die gewünschte Auskunft im Control-Center ist damit erstellt.