Programmieren mit dBASE PLUS: dataSource

Aus Wikibooks


Diese Eigenschaft bestimmt, welche Optionen in einem ComboBox-, ListBox-, NoteBook- oder TabBox-Objekt angezeigt werden.

Eigenschaft von[Bearbeiten]

ColumnComboBox, ComboBox, ListBox, NoteBook, TabBox

Beschreibung[Bearbeiten]

Mit der Eigenschaft dataSource legen Sie die Optionen fest, die in einem ComboBox-, ListBox-, NoteBook- oder TabBox-Objekt angezeigt werden. Die Eigenschaft dataSource für ein ComboBox- oder ListBox-Objekt besteht aus einem String, der folgende Werte annehmen kann:

  • ARRAY <Array>
erstellt Optionen aus den Elementen eines Array-Objekts.
  • FIELD <Feldname>
erstellt Optionen aus allen Werten eines Feldes einer Tabellendatei.
  • FILE [<Dateinamensgerüst>]
erstellt Optionen aus den Dateinamen im aktuellen Standardverzeichnis, die dem optionalen Dateinamensgerüst entsprechen.
  • STRUCTURE
erstellt Optionen aus allen Feldnamen der aktuell ausgewählten Tabellen.
  • TABLES
erstellt Optionen aus den Namen aller Tabellen, die in der aktuell ausgewählten Datenbank enthalten sind. Bei der Standarddatenbank sind dies alle .DBF- und .DB-Dateien im aktuellen Verzeichnis.

Für NoteBook- und TabBox-Objekte kann die Eigenschaft dataSource nur in Form eines Arrays angegeben werden. Im String für dataSource wird nicht zwischen Groß- und Kleinschreibung unterschieden. Bei Angabe eines literalen Arrays wird der Inhalt in der Schreibweise angezeigt, in der er eingegeben wurde.

Das Einfügen neuer Elemente in ein Array, das bereits der dataSource-Eigenschaft einer Komponente zugewiesen ist, führt nicht zwangsläufig zur Aktualisierung der Komponentenoptionen. Dateien, die Sie nach der Zuweisung einer Dateimaske an die dataSource-Eigenschaft neu in das Verzeichnis aufnehmen, werden ebenfalls nicht automatisch angezeigt.

Zur Aktualisierung der Datenquelle muß die dataSource-Eigenschaft neu zugewiesen werden. In den meisten Fällen reicht es aus, der Eigenschaft ihren aktuellen Wert erneut zuzuweisen. Wenn z.B. ursprünglich alle .GIF-Dateien im aktuellen Verzeichnis als Optionen festgelegt wurden, müßte die Neuzuweisung der dataSource-Eigenschaft wie folgt aussehen:

with (this.fileCombobox)
  dataSource = "FILENAME *.GIF"
endwith

Wenn die Dateiliste durch Klicken auf einen Aktualisierungsschalter auf den neuesten Stand gebracht werden soll, müßte das onClick-Event des Schalters folgendermaßen definiert sein:

function updateButton_onClick( )
  form.fileCombobox.dataSource += ""

Die erneute Angabe des dataSource-Strings ist nicht erforderlich, da dieser bereits in der Eigenschaft dataSource enthalten ist. Um den Wert neu zuzuweisen, wird mit dem Operator += einen leerer String hinzugefügt. Die Datenquelle wird dadurch bestätigt. Wenn der dataSource-String nur an einer Stelle vorhanden ist, läßt sich der Programmcode leichter pflegen.

Für den dataSource-String kann ein literales Array angegeben werden, z.B.:

array {"Schokolade", "Erdbeere", "Vanille"}

Es ist aber auch möglich, ein Array-Objekt zu referenzieren:

array aEissorten

Bei Verwendung einer Referenz muß das Array zum Zeitpunkt der Zuweisung der dataSource-Eigenschaft vorhanden sein. Da die dataSource-Eigenschaft diesen String enthält (im obigen Beispiel das Array aEissorten), muß bei der erneuten Zuweisung von dataSource eine aktualisierte Version dieses Arrays existieren. Im vorliegenden Beispiel muß in der Methode updateButton_onClick( ) auf das Array aEissorten zugegriffen werden können.

Aus diesem Grund wird das aktualisierbare Array, das für die Eigenschaft dataSource verwendet wird, in der Regel als Eigenschaft des Formulars erzeugt. Auf das Array kann dadurch sowohl von der Komponente, die es verwendet, als auch von allen anderen Komponenten, welche die dataSource erneut zuweisen müssen, zugegriffen werden. Wenn das Array aEissorten als Eigenschaft des Formulars deklariert wird, hat der dataSource-String hat folgenden Inhalt:

array form.aEissorten

Die Referenz form.aEissorten ist für den Event-Handler und für alle Komponenten des Formulars gültig.