Es gibt zwei weitere Prozeduren, um Listen zuerstellen: NewDBListe() und NewMultiListe().
Falls die Liste von Strings nur einen String enthält, wird dieser als Liste von Strings (siehe Token()) aufgefasst, die durch Leerzeichen getrennt sind.
azurprg wird aufgerufen, wenn ein Listeneintrag selektiert oder eine Checkbox de/markiert wird. Besteht azurprg aus zwei durch Komma getrennten Teilen (also z.B. SelMe,KlickMe, dann wird bei einem Doppelklick das zweite, hier also KlickMe aufgerufen.
Jedes Listenelement hat einen Inhalt, welcher angezeigt wird, und einen
Key. Der Key wird automatisch erzeugt. Dem ersten Listenelement wird
der Key 0 zugewiesen, den weiteren entsprechend die folgenden Zahlen.
Wenn man eigene Keys verteilen möchte, so sind diese mit einem
Siehe ExportVar()
Setzen: s=key oder s=inhalt
Beispiel:
Beide Beispiele setzen die Selektion der Liste liste1 auf Ahausen (
unter der Voraussetzung, dass Ahausen den Key 1 besitzt).
Ändern: s= @Set inhalt|key
Setzt das Listenelement mit dem Key key auf inhalt
Ändern des Keys: s= @NewKey alterkey neuerkey
Setzt das Listenelement mit dem Key key auf inhalt
Löschen: s= @Del key oder @Del inhalt
Löscht das Listenelement mit dem Key key oder dem Inhalt inhalt.
Alles löschen: s= @DelAll
Löscht alle Einträge in der Liste.
Erweitern: s= @App inhalt|key
Häkchen setzen: s= @Check inhalt oder @Check key.
Häckchen löschen: s= @Uncheck inhalt oder @Uncheck key.
Setzt oder löscht das Häkchen links neben dem Eintrag, der durch inhalt bzw.
key spezifiziert wird. Das funktioniert nur, wenn für die Liste mit mitcb
vereinbart wurde, dass Kästchen für die Häkchen erzeugt werden.
Setzt das Listenelement mit dem Key key auf inhalt
Beispiel:
Hängt eine neues Listenelement an die Liste liste1 an. In der Liste
erscheint Behausen. Dieses Element wird mit dem Key 2 angesprochen.
Falls kein Key zu einem Element bekannt ist, kann auch, wie bei @Del, der
Inhalt angegeben werden. Die Eineindeutigkeit der Keys wird nicht vom
System überwacht. Die Liste ist grundsätzlich nicht sortiert, weder nach
Inhalt, noch nach Key. Die Reihenfolge richtet sich nach der Reihenfolge
des Anfügens.
Steuerung mit ExportVar (liste, s)
oder:
Eine Liste kann in der Parameterliste eines Handlers als Array oder String
empfangen werden. Im Falle eines Arrays wird die gesamte Liste
in eine Array-
Wenn der Klick auf eine Liste einen Handler auslöst, dann kann
zusätzlich durch den Parameter Label der String abgefragt werden,
der in der Liste gerade selektiert ist.
ImportVar() ist eine weitere Möglichkeit, die Liste abzufragen.
Der String, der von dieser Funktion zurückgeliefert wird, wird mittels
StrToArray() in ein Array gewandelt. Dieses übernimmt wie oben
das selektierte Listenelement als aktiven Arrayeintrag.
Auf die Übernahme einer Liste als Array sollte jedoch verzichtet werden,
wenn die Liste viele Elemente enthält, da die Umwandlung in ein Array
lange dauern kann.
Wird beim Aufruf von ImportVar dem Elemntnamen =VAL hinzugefügt,
erhält man statt des Arrays nur den aktuellen gewählten Eintrag. Mit
einem hinzugefügten =KEY erhält man dessen Key.
Falls der Parameter mitcb True ist, gilt es zu beachten, dass sich die geschlossene Liste bei einem Klick auf eine Checkbox nicht schließt. Jene bleibt solange geöffnet, bis der Benutzer einen Listeneintrag selektiert oder die Liste den Fokus verliert. Im geschlossenen Zustand wird immer der erste Listeneintrag angezeigt.
Ein Listeneintrag wird nur dann selektiert, wenn nicht auf seine Checkbox geklickt wird. Um zwischen einer Selektion und einem Un/Checked unterscheiden zu können, kann in der Handlerfunktion das Bool Elementname_CHK empfangen werden, das True ist, wenn eine Checkbox de/markiert wurde.
Wird beim Aufruf von ImportVar hinter dem Elementnamen =CHK hinzugefügt, erhält man den String eines Arrays, das zu jedem Key ein Bool enthält, das angibt, ob der jeweilige Inhalt angeklickt ist (nur wenn mitcb True ist). Siehe dazu auch das letzte Beispiel unten.
oder:
oder:
Beispiele:
MeinHandler (Array liste1)
aktueller_inhalt := liste1[CURRVAL]
aktueller_key := liste1[CURRKEY]
END
MeinHandler (String liste1)
aktueller_key := liste1
END
MeinHandler ()
arr := StrToArray(ImportVar("liste1"))
aktueller_inhalt := arr[CURRVAL]
aktueller_key := arr[CURRKEY]
END
MeinHandler ()
arr := StrToArray(ImportVar("liste1"))
aktueller_inhalt := arr[CURRVAL]
aktueller_key := arr[CURRKEY]
END
MeinHandler ()
aktueller_inhalt := ImportVar("liste1=VAL")
aktueller_key := ImportVar("liste1=KEY")
END
MeinHandler ()
A := StrToArray(ImportVar("liste1=CHK"))
B := StrToArray(ImportVar("liste1"))
FORALL _key IN A
IF (OnOff(A[_key])
print (B[_key] + " ist angeklickt.")
ENDIF
ENDFOR
END
Siehe auch NewTree().
toposoft 28.10.2024