360 likes | 486 Views
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
E N D
List/Comboboxen Programmierung von List- und Comboxen mitMicrosoft Visual FoxPro
Diese Schulung dient der Einführung in das Arbeiten mit List- und Comboxen unterMicrosoft Visual FoxPro
Themenübersicht • Grundlagen • Unterschiede zwischen List-/ Comboboxen • Ereignisse • Click, DblClick, InteractiveChange, Valid, When • Zugriff auf Einträge • Diverse Sonderfälle
Grundlagen Grundlagen von List- und Comboboxen unterMicrosoft 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
VFP-deutsch: Listenfeld Kombinationsfeld Datenfeld ElementNr Index Eigenschaft VFP-Englisch: ListBox ComboBox Array ItemId Index Property Begriffs-Vereinbarungen
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
Ereignisse Wichtige Ereignisse in Combo/Listboxen unter Microsoft Visual FoxPro
Wichtige Events • Click • DblClick • InteractiveChange • Valid • When
Click-Event • wird 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 • bei Maus-Doppelclick • beim "ENTER"-Drücken in einer ListBoxACHTUNG! Bei TabStop = .T. verliert die ListBox in diesem Fall den Eingabefocus! • wird nicht aktiviert: • in der ComboBoxAusnahme: 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: • 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.)
Zugriff auf Einträge 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"!
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 (2)
Index-Zugriff: arbeitet mit "Index" ItemData List Picture Selected ID-Zugriff: arbeitet mit "ItemId" ItemIdData ListItem <keine Entsprechung> SelectedId Zugriff auf Einträge (3) • 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! Das waren die Themen: • Grundlagen • Unterschiede zwischen List-/ Comboboxen • Ereignisse • Zugriff auf Einträge • Diverse Sonderfälle
Wenn Fragen bestehen: Wizards & Builders Methodische Software-Entwicklung GmbH Frankfurter Str. 21b 61476 Kronberg Tel.: 06173-950906 Fax: 06173-950907 CIS: 101605,175