Programmierung von List- und Comboxen mit Microsoft Visual FoxPro List/Comboboxen Programmierung von List- und Comboxen mit Microsoft Visual FoxPro
Diese Schulung dient der Einführung in das Arbeiten mit List- und Comboxen unter Microsoft Visual FoxPro
Themenübersicht Grundlagen Unterschiede zwischen List-/ Comboboxen Ereignisse Click, DblClick, InteractiveChange, Valid, When Zugriff auf Einträge Diverse Sonderfälle
Grundlagen von List- und Comboboxen unter Microsoft Visual FoxPro
List- und ComboBoxen List- und ComboBoxen finden Verwendung zur Darstellung multipler Inhalte Sie sind verwendbar als "Auskunfts"-Control "Auswahl"-Control "auslösendes" Control
Begriffs-Vereinbarungen VFP-deutsch: Listenfeld Kombinationsfeld Datenfeld ElementNr Index Eigenschaft VFP-Englisch: ListBox ComboBox Array ItemId Index Property
Neuigkeiten in VFP teilweise objektorientierter Ansatz Gleichwertigkeit von List- und ComboBox neue Datenquellen Mehrspaltigkeit Einbeziehen von BMPs
OOP mit List-/ComboBoxen Können wie alle anderen VFP-Controls als Objekte behandelt werden. Sind keine Container, d.h. sie sind nicht in weitere Unterobjekte gegliedert! Gleichwertigkeit bzgl. Datenquellen und aller Neuerungen
Unterschiede Unterschiede zwischen List- und Comboboxen unter Microsoft Visual FoxPro
Unterschiede ...resultierend aus der Funktionalität (sichtbar in differierenden Events/Props) ...bzgl. des Event-Verhaltens! außerdem bei ComboBox: Unterschiede zwischen einer TextBox und dem Eingabebereich einer ComboBox
Funktionalitätsunterschiede resultierend aus der Bedienung MoverBars und MultiSelect nur bei der ListBox Text-Editier-Möglichkeiten nur bei ComboBox (Style 0)
Properties/Events ComboBox Alignment SelectedForeColor BackColor SelLength ForeColor SelStart Margin SelText SelectedBackColor Style alle notwendig für den Eingabebereich DropDown-Event reagiert auf das "Ausklappen"
Spezielle Properties ListBox MoverBars MultiSelect
Wichtige Ereignisse in Combo/Listboxen unter Microsoft Visual FoxPro
Wichtige Events Click DblClick InteractiveChange Valid When
Click-Event wird aktiviert wird nicht aktiviert: bei Mausclick beim tastaturgesteuerten "Wandern" in einer Listbox mit den -Tasten (nicht dagegen bei HOME, END, PgUp, PgDn!) beim "ENTER"-Drücken in aufgeklappter ComboBox wird nicht aktiviert: bei Klick in den ScrollBar bei Klick in nicht belegte Teile einer Listbox wird doppelt(!) aktiviert (in bestimmten Konstellationen)
DblClick-Event wird aktiviert wird nicht aktiviert: bei Maus-Doppelclick beim "ENTER"-Drücken in einer ListBox ACHTUNG! Bei TabStop = .T. verliert die ListBox in diesem Fall den Eingabefocus! wird nicht aktiviert: in der ComboBox Ausnahme: Doppelclick im Eingabebereich bei Style 0 bei Klick in nicht belegte Teile einer Listbox wird doppelt(!) aktiviert (in bestimmten Konstellationen)
InteractiveChange-Event wird aktiviert, wenn ein anderer als der gerade aktive Eintrag zum aktuellen Eintrag gemacht wird durch Mausclick auf einen anderen als den aktiven Eintrag durch Tastatur-Navigation wird nicht aktiviert: bei Klick in den ScrollBar bei Klick in nicht belegte Teile einer Listbox bei MultiSelect = .T. muß der aktuelle Eintrag kein selektierter Eintrag sein!
Valid-Event wird aktiviert: wird nicht aktiviert: bei Mausclick (Auswahlliste der ComboBox) bei Maus-Doppelclick (ListBox) beim "ENTER"-Drücken (List-/ComboBox; die ListBox und eine nicht aufgeklappte ComboBox verliert bei TabStop=.T. in diesem Fall den Focus!) wird nicht aktiviert: bei Mausclick in ListBox bei Tastatur-Navigation in aufgeklappter ComboBox
When-Event wird aktiviert: beim Aktivieren einer List- oder ComboBox als letzter Event bei Mausklick oder Tastatur-Navigation in der ListBox (außer bei Mausclick auf den aktiven Eintrag!) als letzter Event bei Mausklick oder "ENTER"-Drücken in der aufgeklappten ComboBox beim "ENTER"-Drücken (ListBox und nicht aufgeklappte ComboBox bei TabStop=.F.)
Werzuweisung und Zugriff auf Einträge in Combo/Listboxen
ControlSource bestimmt die Variable oder das Datenbankfeld, welches den "Zustand" des Listenfeldes verwaltet (d.h. auf welchem Eintrag befindet sich augenblicklich der Listbox-/ ComboBox-Cursor) Datentyp "C" oder "N" definiert nicht(!) die in List-/ ComboBox anzuzeigenden Einträge!
verwandte Properties ListIndex (Datentyp "N") Nummer des aktuellen Eintrags (bezogen auf die optische Reihenfolge der Einträge) ListItemId (Datentyp "N") eindeutige Identifikationsnummer (unabhängig von der optischen Reihenfolge) DisplayValue (Datentyp "N" oder "C") Inhalt der ersten Spalte bzw. bei ComboBox mit Style 0 Inhalt des Eingabebereiches Value (Datentyp "N" oder "C") aktueller Eintrag
Zugriff auf die Einträge (1) über den "Index" aktuelle Position des jeweiligen Eintrags bezogen auf die optische Anordnungsfolge über die "ItemId" eine eindeutige, von der optischen Position unabhängige Identifikation ACHTUNG! Bestimmte Methoden bzw. Properties funktionieren entweder nur mit "Index" oder nur mit "ItemId"!
Zugriff auf Einträge (2) Index-Zugriff: arbeitet mit "Index“ AddItem IndexToItem ItemData List ListIndex NewIndex Picture RemoveItem Selected TopIndex ID-Zugriff: arbeitet mit "ItemId" AddListItem M ItemToIndex M ItemIdData PA ListItem PA ListItemId P NewItemId P <keine Entsprechung> PA RemoveListItem M SelectedId PA TopItemId P
Zugriff auf Einträge (3) Index-Zugriff: arbeitet mit "Index" ItemData List Picture Selected ID-Zugriff: arbeitet mit "ItemId" ItemIdData ListItem <keine Entsprechung> SelectedId Die vorstehenden Properties beinhalten array-ähnliche Strukturen, auf die als Subskript mit dem gewünschten "Index" bzw. der gewünschten "ItemId" zugegriffen werden kann. Auf diese Properties kann nicht(!) mit VFP-Array-Befehlen zugegriffen werden!
Daten-Quellen 0 - keine 1 - explizit angegebene Einträge 2 - Alias 3 - SQL-Statement 4 - Query 5 - Array 6 - Feldliste 7 - Dateien 8 - DBF-Struktur (9 - Popup)
Divsere Sonderfälle Mehrere Spalten, Mehrfach-auswahl, Sortieren, Mover, BitMaps in Combo/Listbox
Properties für mehrspaltigeBoxen BoundColumn ColumnCount ColumnLines ColumnWidths DisplayValue RowSource RowSourceType
Mehrfachauswahl ListBox MultiSelect = .T. funktioniert bei allen RowSourceTypes Selected und SelectId geben Auskunft darüber, ob ein Eintrag selektiert ist ListIndex, ListItemId, Value, DisplayValue und ControlSource geben keine(!) Auskunft darüber, ob ein Eintrag selektiert ist
"MoverBars" und "Sorted" in der ListBox nur zugelassen bei RowSourceType 0 und 1 bei MoverBars = .T. kann die ListBox per Maus umsortiert werden Sorted = .T. führt zum alphabetisch sortierten Anzeigen der Listbox (MACHINE-Sortierung ohne Berücksichtigung von CodePage und Collate-Sequenz!)
"Sorted" in der ListBox bewirkt ein sortiertes Erscheinen der ListBox beim Aufbau die Sortierung kann durch MoverBars bzw. explizites Hinzufügen von Einträgen mit AddItem/AddListItem gestört werden (obwohl Sorted = .T. bestehen bleibt) eine erneute Zuweisung "Sorted = .T." bewirkt ein neuerliches Sortieren
BMPs in List-/ComboBox PICTURE( ListIndex ) = "xyz.bmp" bewirkt die Anzeige der entsprechenden Bitmap links neben der ersten Spalte einer List-/ComboBox bei der ComboBox werden die BMPs nur in der aufgeklappten Liste angezeigt fehlende BMPs erzeugen keinen Fehler GENERAL-Felder können im Widerspruch zur Dokumentation nicht(!) verwendet werden
Was ist zu beachten? List-/Comboboxen sehr leistungsfähig Zugriff über ID oder Index sehr aufwendig Builder verfügbar Bitmapproblem
Vielen Dank! Grundlagen Unterschiede zwischen List-/ Comboboxen Das waren die Themen: Grundlagen Unterschiede zwischen List-/ Comboboxen Ereignisse Zugriff auf Einträge Diverse Sonderfälle
Wenn Fragen bestehen: Wizards & Builders Frankfurter Str. 21b Methodische Software-Entwicklung GmbH Frankfurter Str. 21b 61476 Kronberg Tel.: 06173-950906 Fax: 06173-950907 CIS: 101605,175