Auswählen der Art der Daten für ein Listenfeld oder ein Kombinationsfeld
Mit der RowSourceType-Eigenschaft legen Sie fest, aus welcher Art von Datenquelle die Werte für das Listenfeld bzw. für das Kombinationsfeld stammen. Hierbei kann es sich z. B. um ein Array oder eine Tabelle handeln. Wenn Sie die RowSourceType-Eigenschaft eingestellt haben, geben Sie anhand der RowSource-Eigenschaft die Datenquelle für die Listenelemente an.
RowSourceType | Datenquelle für die Listenelemente |
---|---|
0 | Keine. Elemente werden programmgesteuert zur Liste hinzugefügt. |
1 | Value |
2 | Alias |
3 | SQL-Anweisung |
4 | Abfrage (QPR) |
5 | Array |
6 | Felder |
7 | Dateien |
8 | Struktur |
9 | Popup. Wird nur aus Gründen der Abwärtskompatibilität bereitgestellt. |
In den folgenden Abschnitten werden die verschiedenen Einstellungen der RowSourceType-Eigenschaft beschrieben.
Keine Wenn Sie die RowSourceType-Eigenschaft****auf 0 (Standardeinstellung) einstellen, wird die Liste nicht automatisch gefüllt. Listenelemente können mit der AddItem-Methode hinzugefügt werden:
frmForm1.lstMyList.RowSourceType = 0
frmForm1.lstMyList.AddItem("First Item")
frmForm1.lstMyList.AddItem("Second Item")
frmForm1.lstMyList.AddItem("Third Item")
Die RemoveItem-Methode ermöglicht es Ihnen, Einträge aus der Liste zu entfernen. Beispielsweise entfernt die folgende Codezeile das zweite Element aus der Liste:
frmForm1.lstMyList.RemoveItem(2)
Wert Wenn Sie die RowSourceType-Eigenschaft auf 1 einstellen, können Sie in der RowSource-Eigenschaft mehrere Werte angeben, die Sie in der Liste anzeigen möchten. Falls Sie die RowSource-Eigenschaft im Eigenschaftenfenster einstellen, beziehen Sie eine durch Kommas getrennte Liste von Einträgen ein. Falls Sie die RowSource-Eigenschaft programmgesteuert einstellen, setzen Sie die durch Kommas getrennte Liste in Anführungszeichen:
Form1.lstMyList.RowSourceType = 1
Form1.lstMyList.RowSource = "one,two,three,four"
Alias Wenn Sie die RowSourceType-Eigenschaft auf 2 einstellen, können Sie Werte aus einem Feld oder mehreren Feldern einer geöffneten Tabelle einbeziehen.
Falls die ColumnCount-Eigenschaft auf 0 oder 1 eingestellt ist, zeigt die Liste Werte im ersten Feld der Tabelle an. Ist die ColumnCount-Eigenschaft auf 3 eingestellt, zeigt die Liste Werte in den ersten drei Feldern der Tabelle an. Um Felder in einer anderen Reihenfolge als derjenigen anzuzeigen, in der sie in der Tabelle gespeichert sind, stellen Sie die RowSourceType-Eigenschaft auf 3 - SQL-Anweisung oder 6 - Felder ein.
Anmerkung Wenn die RowSourceType-Eigenschaft auf 2 - Alias oder 6 - Felder eingestellt ist und die Benutzer in der Liste einen anderen Wert wählen, wird der Datensatzzeiger der Tabelle auf den Datensatz mit dem Wert dieses Listenelements gesetzt.
SQL-Anweisung Wenn Sie die RowSourceType-Eigenschaft auf 3 - SQL-Anweisung einstellen, müssen Sie als RowSource-Eigenschaft eine SELECT - SQL-Anweisung eingeben. Die folgende Anweisung wählt z. B. alle Felder und alle Datensätze aus der Tabelle Customer aus und überträgt sie in einen Cursor:
SELECT * FROM Customer INTO CURSOR mylist
Falls Sie die RowSource-Eigenschaft programmgesteuert einstellen, denken Sie daran, die SELECT-Anweisung in Anführungszeichen zu setzen.
Anmerkung Standardmäßig zeigen SELECT-Anweisungen von Visual FoxPro ohne INTO-Klauseln die sich ergebende Cursordatei sofort in einem Datenblattfenster an. Da dies in den meisten Fällen nicht erwünscht ist, sollten Sie in die SELECT-Anweisung eine INTO CURSOR-Klausel einfügen.
Abfrage Wenn Sie die RowSourceType-Eigenschaft auf 4 einstellen, können Sie Ihr Listenfeld mit den Ergebnissen einer Abfrage auffüllen, die Sie im Abfrage-Designer entworfen haben. Ist die RowSourceType-Eigenschaft auf 4 eingestellt, stellen Sie die RowSource-Eigenschaft auf die QPR-Datei ein. Beispielsweise stellt die folgende Codezeile die RowSource-Eigenschaft einer Liste auf eine Abfrage ein.
THISFORM.List1.RowSource = "region.qpr"
Falls Sie keine Dateinamenerweiterung angeben, setzt Visual FoxPro die Erweiterung QPR voraus.
Array Wenn Sie die RowSourceType-Eigenschaft auf 5 einstellen, wird die Liste mit den Einträgen aus einem Array aufgefüllt. Sie können für die RowSource-Eigenschaft entweder eine Arrayeigenschaft des Formulars oder Formularsatzes erstellen oder ein Array verwenden, das Sie bereits an anderer Stelle Ihrer Anwendung erstellt haben.
Informationen zum Erstellen von Arrayeigenschaften finden Sie in Kapitel 9, Erstellen von Formularen.
Tipp Die RowSource-Einstellung einer Liste wird von Visual FoxPro bei Bedarf in der Anwendung und nicht nur in der Methode ausgewertet, in der Sie die RowSource-Eigenschaft eingestellt haben. Diesen Geltungsbereich müssen Sie bedenken. Wenn Sie ein lokales Array in einer Methode erstellen, erstreckt sich der Geltungsbereich des Arrays nur auf die Methode, und es ist nicht in allen Fällen verfügbar, in denen Visual FoxPro die Eigenschaftseinstellung auswerten muss. Falls Sie die RowSource-Eigenschaft einer Liste auf eine Arrayeigenschaft des Formulars oder Formularsatzes einstellen, müssen Sie auf die Eigenschaft relativ zur Liste und nicht relativ zur Methode Bezug nehmen, in der Sie die Eigenschaft eingestellt haben. Wenn Sie beispielsweise die
arrayprop
-Arrayeigenschaft für ein Formular eingestellt haben, führen die folgenden Codezeilen für das Init-Ereignis des Formulars zu unterschiedlichen Ergebnissen:
THIS.lst1.RowSource = "THIS.arrayprop" && Error
THIS.lst1.RowSource = "THISFORM.arrayprop" && No error.
So füllen Sie eine Liste mit den Elementen eines mehrdimensionalen Arrays auf
- Stellen Sie die RowSourceType-Eigenschaft auf 5 ein.
- Stellen Sie die RowSource-Eigenschaft auf das mehrdimensionale Array ein.
- Stellen Sie die ColumnCount-Eigenschaft auf die Anzahl der anzuzeigenden Spalten ein.
- Stellen Sie die ColumnWidths-Eigenschaft auf die gewünschte Breite für jede Spalte ein.
Felder Wenn Sie die RowSourceType-Eigenschaft auf 6 einstellen, können Sie ein Feld oder eine durch Kommas getrennte Feldliste zum Auffüllen der Liste angeben, zum Beispiel:
contact,company,location
Sie können die folgenden Informationsarten in die RowSource-Eigenschaft einer Liste mit der RowSourceType-Einstellung 6 - Felder einbeziehen:
- field
- alias.field
- alias.field, field, field, ...
Wenn eine Liste Felder aus mehreren Tabellen enthalten soll, stellen Sie die RowSourceType-Eigenschaft auf 3 - SQL-Anweisung ein.
Im Gegensatz zur RowSourceType-Einstellung 2- Alias ermöglicht es Ihnen die RowSourceType-Einstellung 6 - Felder, Felder unabhängig von ihren tatsächlichen Positionen in der Tabelle anzuzeigen.
Dateien Wenn Sie die RowSourceType-Eigenschaft auf 7 einstellen, wird die Liste mit den Dateien des aktuellen Verzeichnisses aufgefüllt. Außerdem ermöglichen es Ihnen Optionen in der Liste, ein anderes Laufwerk und Verzeichnis für Dateinamen zu wählen, die in der Liste angezeigt werden sollen.
Stellen Sie die RowSource-Eigenschaft auf den Platzhalter der Dateitypen ein, die in der Liste angezeigt werden sollen. Um beispielsweise Visual FoxPro-Tabellen in der Liste anzuzeigen, stellen Sie die RowSource-Eigenschaft auf DBF ein.
Struktur Wenn Sie die RowSourceType-Eigenschaft auf 8 einstellen, wird die Liste mit den Feldern der Tabelle aufgefüllt, die Sie beim Einstellen der RowSource-Eigenschaft angeben. Diese RowSourceType-Einstellung ist zweckmäßig, wenn Sie den Benutzern eine Liste von Feldern zur Verfügung stellen möchten, die nach Werten durchsucht werden müssen oder nach denen eine Tabelle sortiert werden soll.
Popup Wenn Sie die RowSourceType-Eigenschaft auf 9 einstellen, können Sie die Liste aus einem zuvor definierten Popup ausfüllen. Diese Option steht aus Gründen der Abwärtskompatibilität zur Verfügung.
Siehe auch
Anwendung von Listenfeldern und Dropdown-Listenfeldern | Erstellen von mehrspaltigen Listenfeldern | Verwenden von Steuerelementen | Steuerelemente und Objekte | RowSourceType-Eigenschaft | RowSource