Eulanda. Multi Select
Zuletzt geändert: 07.05.2024 16:25

Eulanda.MultiSelect-Dialog #

Beispiel für den Multi-Select-Dialog. #

Hierbei werden mehrere Optionen zur Auswahl angezeigt und können per Checkbox markiert werden.

In diesem Beispiel werden die anzuzeigenden Optionen aus einem Recordset (SQL-Ergebnismenge) ermittelt. Die Einträge können aber euch einzeln über Add(Caption) zugefügt werden.

option explicit

dim rs, s, i
' Die "id"-Spalte wird in "data" umbenannt, und steht dadurch
' beim Zusammenbau der Ergebnis-Meldung als "data" zur Verfügung
set rs = Client.ExecuteSql("select top 10 id as data, Match, PLZ, Ort, CreateDate from dbo.adresse order by id desc")

dim dialog
  set dialog = Client.CreateDialog("Eulanda.MultiSelect","")
    with dialog
      .Title = "Auswahl der Kunden"
      .SubTitle = "Ein Untertitel ..."
      .SingleSelect = False
      ' Vorlage für die Darstellung der einzelnen Datensätze (Adressen)
      .AddItemsFromRecordset Rs, "CaptionTemplate=%match% [b]%PLZ% %Ort%[/b] [blue]%CreateDate%[/blue]"
      .Add("Manueller Eintrag ohne Daten")
      .Add("Manueller Eintrag mit Daten").Data = 4711
      .NoAbortWarning = True
      .UseFilterTree = False
      .AllowDragDrop = False
      .OkEnabled = "SELECTED"

      if .Execute Then
        s = ""
         ' Zusammenbau der Rückmeldung
          for i=0 to .Count-1
            with .Items(i)
              ' wenn selektiert, ...
              if .State > 0 then
                if s <> "" then s = s & ","
                s = s & CStr(.Data)
              end if
            end With
          Next
        MsgBox s
      end if

    end With
  set dialog = Nothing

Dialog-Eigenschaften #

Title, Subtitle #

Fenstertitel und Untertitel

IconUrl #

Name des anzuzeigenden Icons (Symbols) - z.B. folder für ein Ordnersymbol oder gearwheel für ein Zahnrädchen. Eine Liste aller Symbole finden Sie im Entwickler-Menü unter “Berichte und Auswertungen” über “Liste aller Icons”

Count #

Die Anzahl aller Elemente.

Items(Index: Integer) #

Zugriff auf die einzelnen Elemente. Der Index geht hierbei von 0 bis Count-1.

SingleSelect: boolean #

Falls True, kann nur ein einzelnes Element ausgewählt werden. Ansonsten werden Checkboxen neben jedem Element angezeigt.

AllowDragDrop: boolean #

Es ist möglich, Elemente neu anzuordnen (Drag-and-Drop)

HtmlHelpHeight: Integer #

Die Höhe des HTML-Hilfebreichs in Pixeln

NoAbortWarning: Boolean #

Keine Warnung beim Abbrechen des Dialogs

OkEnabled: string #

Modus, wann der OK-Button aktiv ist. Always immer, Modified (wenn etwas verändert wurde, wie die Reihenfolge) oder Selected (wenn etwas ausgewählt wurde).

Dialog-Methoden #

Add (Caption: string): Item #

Fügt ein Element mit dem in Caption angegebenen Text an. Das erzeugte Element wird zurückgegeben. Hier können bei Bedarf noch weitere Eigenschaften gesetzt werden.

Add("Beispiel-Element").Data = 4711

Legt ein Element an und setzt die Data-Eigenschaft auf 4711. Die Data-Eigenschaft kann nützlich sein, um die ausgewählten Elemente nach Ausführung des Dialog-Fensters zu unterscheiden.

Siehe auch “Element-Eigenschaften” weiter unten.

AddItemsFromRecordset (RS: recordset, Options: string ) #

Fügt die Zeilen der Datenmenge ab der aktuellen Position bis zum Ende der Datenmenge (EOF) in den Baum ein. Falls auch die Daten eingefügt werden sollen, die vor der aktuellen Position stehen, muss RS.MoveFirst aufgerufen werden.

Wenn die Datenmenge ein Feld Caption enthält wird dieses als Anzeigetext des Elements verwendet. Ebenso wird mit den Feldern HtmlHelp, Data und State verfahren.

Über Options können komplexere Regeln bzw. Templates angegeben werden, um die Baum-Elemente anhand der Daten aus der Datenmenge zu erstellen. Mehrere Optionen werden durch Semikolon getrennt. Option1=Wert1;Option2=Wert2; … Enthält der Wert ein Semikolon, so muss der Wert in doppelte Anführungszeichen gesetzt werden.

CaptionTemplate: string (Options) #

Hier kann eine Textvorlage für Caption mit Platzhaltern für die Datenmengen-Felder angegeben werden. Zum Beispiel

CaptionTemplate="%Match% aus %PLZ% %Ort%" Hierbei sind alle Spalten aus der Datenmenge zulässig. Weitere Informationen zu den Textvorlagen finden Sie im Handbuch.

Über die Caption kann auch eine Hierarchie (mehrere Ebenen) im Baum eingefügt werden. Die einzelnen Ebenenen müssen dann mit dem Pipe-Symbol | getrennt werden. Beispiel:

CaptionTemplate="%WarenGr%|%ArtNummer" - hier werden die Artikelnummern nach Warengruppen eingeteilt.

HtmlHelpTemplate: string (Options) #

Textvorlage für die angezeigte HTML-Hilfe

StateField: string (Options) #

Feldname der Spalte, die für die State-Eigenschaft verwendet werden soll. Wenn dieser nicht angegeben, wird State angenommen.

DataField: string (Options) #

Feldname der Spalte, die für die Data-Eigenschaft verwendet werden soll. Wenn dieser nicht angegeben, wird Data angenommen.

DataTemplate: string (Options) #

Wie bei CaptionTemplate, kann auch hier eine Vorlage für die Data-Eigenschaft hinterlegt werden.

DataValues: boolean (Options) #

Wenn True, werden alle Spaltenwerte der jeweiligen Zeile in Data abgelegt. Auf diese Werte kann später z.B. über item.data.Match oder item.data.ArtNummer zugegriffen werden.

AddItemsFromSql (SQL: string, Options: string ) #

Führt die SQL-Abfrage aus und fügt die Zeilen als Elemente an. Zu den weiteren Optionen siehe AddItemsFromRecordset.

Element-Eigenschaften #

Caption: string #

der angezeigte Text. Hierbei können über sehr Auszeichnungen, wie Fettdruck oder einfache Farben möglich. Diese werden als Tags in eckigen Klammern angegeben (vereinfachter BBCode). Zum Beispiel [b]fetter Text[/b] oder [blue]in blau[/blue].

Data: variant #

Die Nutzdaten eines Elements. Diese dienen dazu, nach Beendigung des Dialogs das ausgewählte Element zuzuordnen. Hier kann zum Beispiel die ID eines Datensatzes oder die Artikelnummer eines Artikels hinterlegt werden. Wenn DataValues bei AddItemsFromRecordset() angegeben wurde, kann über Data auch auf jedes Feld des Recordsets zugegriffen werden.

HtmlHelp: string #

Dieser HTML-Text wird in einem separaten Fensterbereich angezeigt, sobald das Element ausgewählt wird.

IconUrl: string #

optionales Symbol (siehe oben Iconurl)

Level: integer #

Ebene des Elements zum Lesen. Schreiben ist nur beim erstmaligen Befüllen der Elemente möglich. Hierbei darf der Level maximal eins höher, als der Level des zuletzt angefügten Elements sein,

URL: string #

eine Optionale URL, um aus der HTML-Hilfe heraus ein bestimmtes Element zu selektieren.

Element-Methoden #

Add (Caption: string): Item #

Erzeugt direkt einen Untereintrag eines Elements ohne Umwege über die Level-Eigenschaft. Siehe auf Add() unter Dialog-Methoden.