[Inhalt] [Zurück] [Weiter] [Thema] [Index]

NewListe()


Syntax:

NewListe(String name, Real xpos, Real ypos, Real breite, Real hoehe, Bool offen, String azurprg, String s1, ... [, Bool mitcb])
name: Name der Liste
xpos: Koordinaten in Pixeln, relativ zur linken
ypos: oberen Ecke des Windows
breite: Breite der Liste in Pixeln
hoehe: Höhe der offenen Liste in Pixeln
offen: TRUE=die Liste ist geöffnet
azurprg: Azurprogramm oder ""
s1,...: Liste der einzelnen Auswahlwerte
mitcb: optional: Soll eine Checkbox in jedes Listenelement integriert werden, Voreinstellung: False (siehe unten)

Beispiel:

NewListe( "Farbe", 20,270, 100, 200, FALSE, "", "Schwarz", "Rot", "Blau")

Beschreibung:

Eine Liste wird an die Stelle xpos,ypos platziert. Die Liste wird aus den Einträgen s1 bis sn zusammengesetzt. Die Liste ist entweder offen oder geschlossen. Im offenen Zustand ist sie hoehe Pixel tief, im geschlossenen wird nur eine Zeile dargestellt. Diese Zeile kann durch Mausdruck geöffnet werden, so dass mehrere Zeilen gleichzeitig dargestellt werden. Diese Zeile enthält immer den aktuell gewählten Eintrag.

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 | an den jeweiligen Auswahlwert anzuhängen, z.B. "Schwarz|black". Alternativ kann man auch eine leere Liste anlegen und dann jedes Element mit ExportVar und @App (siehe unten) explizit anhängen.

Steuerung mit ExportVar (liste, s)

  • Siehe ExportVar()

    Setzen: s=key oder s=inhalt

    Beispiel: ExportVar("liste1", "1")
    oder: ExportVar("liste1", "Ahausen")

    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: ExportVar("liste1", "@App Behausen|2")

    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.

Abfragen der Liste

  • 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-Variable gewandelt. Das selektierte Element wird zum aktiven Arrayeintrag. Ist der Parameter hingegen ein String, enhält dieser den Key des selektierten Listenelements.

    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.

Listen mit Checkboxen

  • 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.

    Beispiele:

    •     MeinHandler (Array liste1)
            aktueller_inhalt := liste1[CURRVAL]
            aktueller_key    := liste1[CURRKEY]
          END
      

      oder:

          MeinHandler (String liste1)
            aktueller_key := liste1
          END
      

      oder:

          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 19.04.2024