| 4D v18APPEND TO LIST | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v18
 APPEND TO LIST 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| APPEND TO LIST ( Liste ; EintragText ; EintragRef {; Unterliste ; Erweitert} ) | ||||||||
| Parameter | Typ | Beschreibung | ||||||
| Liste | ListRef |   | Referenznummer für Liste | |||||
| EintragText | String |   | Text für neuen Listeneintrag | |||||
| EintragRef | Lange Ganzzahl |   | Einmalige Referenznummer für neuen Eintrag in Liste | |||||
| Unterliste | ListRef |   | Optionale Unterliste für neuen Eintrag in Liste | |||||
| Erweitert | Boolean |   | Gibt an, ob die optionale Unterliste erweitert oder geschlossen ist | |||||
Der Befehl APPEND TO LIST fügt in der hierarchischen Liste einen neuen Eintrag an mit der in Liste übergebenen Referenznummer.
In EintragText übergeben Sie den Text für den Eintrag. Sie können einen String oder Textausdruck bis zu 2 Millionen übergeben. Ab 4D v16 R4 können Sie in EintragText die Konstante ak standard action title übergeben, wenn dem Eintrag eine Standardaktion zugewiesen ist, um automatisch den lokalisierten Aktionsnamen zu verwenden. Weitere Informationen dazu finden Sie im Abschnitt Standardaktionen.
In EintragRef übergeben Sie die einmalige Referenznummer für den Eintrag (vom Typ Lange Ganzzahl). Auch wenn diese Referenznummer als einmalig definiert ist, können Sie einen beliebigen Wert übergeben. Weitere Informationen finden Sie im Abschnitt Hierarchische Listen verwalten.
Soll ein Eintrag auch untergeordnete Einträge haben, übergeben Sie in Unterliste eine gültige Referenznummer. In diesem Fall müssen Sie auch den Parameter Erweitert setzen. Übergeben Sie TRUE oder FALSE, damit die Unterliste auf- bzw. zugeklappt erscheint.
Die in Unterliste angegebene Referenznummer muss sich auf eine bestehende Liste beziehen. Das kann eine Liste auf einer Ebene oder eine Liste mit Unterlisten sein. Wollen Sie dem neuen Eintrag keine Liste zuordnen, übergeben Sie keinen Parameter oder den Wert Null (0). 
Tipps
Hier ist die Teilansicht einer Datenbankstruktur:

Die beiden Tabellen [Departments] und [Employees] enthalten folgenden Datensätze:


Sie wollen eine hierarchische Liste mit Namen hlList anzeigen, die die Abteilungen auflistet und für jede Abteilung eine untergeordnete Liste mit den jeweiligen Angestellten. Die Objektmethode von hlList lautet:
  ` Objektmethode hierarchische Liste hlList
 
 Case of
 
    :(FORM Event=On Load)
       C_LONGINT(hlList;$hSubList;$vlDepartment;$vlEmployee);$vlDepartmentID
  ` Erstelle neue leere hierarchische Liste
       hlList:=New list
  ` Wähle alle Datensätze aus der Tabelle [Departments]
       ALL RECORDS([Departments])
  ` Wähle für jede Abteilung
       For($vlDepartment;1;Records in selection([Departments]))
  ` die dazugehörigen Angestellten
          RELATE MANY([Departments]Name)
  ` Wie viele sind es?
          $vlNbEmployees:=Records in selection([Employees])
  ` Gibt es in dieser Abteilung mindestens einen Angestellten?
          If($vlNbEmployees>0)
  ` Erstelle untergeordnete Liste für den Eintrag Abteilung
             $hSubList:=New list
  ` Füge für jeden Angestellten
             For($vlEmployee;1;Records in selection([Employees]))
  ` den Eintrag Angestellter in die untergeordnete Liste ein
  ` Die Nummer des Datensatzes aus [Employees] wird als Referenznummer für den Eintrag übergeben
                APPEND TO LIST($hSubList;[Employees]Last Name+", "+[Employees]First Name;([Employees]ID)
  ` Gehe zum nächsten Datensatz [Employees]
                NEXT RECORD([Employees])
             End for
          Else
  ` Keine Angestellten, folglich keine untergeordnete Liste für den Eintrag Abteilung
             $hSubList:=0
          End if
  ` Füge Eintrag Abteilung in übergeordnete Liste ein
  ` Die Nummer des Datensatzes aus [Departments]
  ` wird als Referenznummer für den Eintrag übergeben. Das Bit #31
  ` der Referenznummer für den Eintrag wird auf Eins gesetzt,
  ` um die Einträge Abteilung und Angestellte voneinander zu unterscheiden.
  ` Siehe auch Fußnote, wie dieses Bit zusätzliche Informationen über den Eintrag liefern kann.
          APPEND TO LIST(hlList;[Departments]Name;[Departments]ID?+31;$hSublist;$hSubList#0)
  ` Setze den Eintrag Abteilung zur Hervorhebung der Hierarchie in Fettschrift
          SET LIST ITEM PROPERTIES(hlList;0;False;Bold;0)
  ` Gehe zur nächsten Abteilung
          NEXT RECORD([Departments])
       End for
  ` Sortiere die ganze Liste in aufsteigender Reihenfolge
       SORT LIST(hlList;>)
  ` Zeige die Liste in Windows-Darstellung an und lege als Mindesthöhe für Zeilen 14 Pts fest
       SET LIST PROPERTIES(hlList;Ala Windows;Windows node;14)
 
    :(FORM Event=On Unload)
  ` Die Liste wird nicht mehr benötigt; vergessen Sie nicht, sie zu entfernen!
       CLEAR LIST(hlList;*)
 
    :(FORM Event=On Double Clicked)
  ` Ein Doppelklick ist erfolgt
  ` Erhalte Position des gewählten Eintrags
       $vlItemPos:=Selected list items(hlList)
  ` Prüfe auf alle Fälle die Position
       If($vlItemPos#0)
  ` Hole Information über Eintrag der Liste
          GET LIST ITEM(hlList;$vlItemPos;$vlItemRef;$vsItemText;$vltemSubList;$vbItemSubExpanded)
  ` Ist es ein Eintrag Abteilung?
          If($vlItemRef??31)
  ` Wenn ja, ist es ein Doppelklick auf einen Eintrag in Abteilung
             ALERT("Sie haben auf den Eintrag Abteilung doppelgeklickt"+Char(34)+$vsItemText+Char(34)+".")
          Else
  ` Wenn nicht, ist es Doppelklick auf einen Eintrag in Angestellte
  ` Finde den Datensatz aus [Departments] mit der übergeordneten Referenznummer
             $vlDepartmentID:=List item parent(hlList;$vlItemRef)?-31
             QUERY([Departments];[Departments]ID=$vlDepartmentID)
  ` Teile mit, wo der Angestellte arbeitet und wer der Vorgesetzte ist
             ALERT("Sie haben auf den Eintrag Angestellte doppelgeklickt"+Char(34)+$vsItemText+Char(34)+" wer arbeitet in der Abteilung "+Char(34)+[Departments]Name+Char(34)+" mit dem Vorgesetzten "+Char(34)+[Departments]Manager+Char(34)+".")
          End if
       End if
 End case  `Hinweis: 4D kann pro Tabelle bis zu 1 Milliarde Datensätze speichern. Wir verwenden hier das Bit #31 des unbenutzten hohen Bits zur Unterscheidung der Einträge Angestellte und Abteilung.In diesem Beispiel gibt es nur einen Grund, die Einträge aus [Departments] von den Einträgen [Employees] zu unterscheiden:
Wir haben also einmalige Referenznummern für Einträge angelegt, um zwischen den Datensätzen [Departments] und [Employees] unterscheiden zu können. Nach Ausführung des Formulars sieht die Liste folgendermaßen aus:

Hinweis: Dieses Beispiel eignet sich für die Benutzeroberfläche bei kleiner Anzahl an Datensätzen. Beachten Sie, dass Listen im Speicher gehalten werden — erstellen Sie deshalb keine hierarchischen Listen mit Tausenden von Einträgen.
									INSERT IN LIST
									
									SET LIST ITEM
									
									SET LIST ITEM PARAMETER
									
									SET LIST ITEM PROPERTIES
									
	Produkt: 4D
	Thema: Hierarchische Listen
	Nummer: 
        376
        
        
        
	
	Geändert: 4D v11 SQL  
	Geändert: 4D v16 R4
	
	
	
	
	
	
	
	
	
	
	
	4D Programmiersprache ( 4D v18)
	
	
	
	
	
 Fehler melden
Fehler melden