330 likes | 509 Views
Ansteuerung von Treeview. Die Ansteuerung des MS Treeview-Controls unter Microsoft Visual FoxPro. Diese Schulung dient der Einführung in die Ansteuerung von Treeview-Controls sowie der Darstellung einer Meta-datengesteuerten Treeview-Klasse unter Microsoft Visual FoxPro. Themenübersicht.
E N D
Ansteuerung von Treeview Die Ansteuerung desMS Treeview-Controls unterMicrosoft Visual FoxPro
Diese Schulung dient der Einführung in die Ansteuerung von Treeview-Controls sowie der Darstellung einer Meta-datengesteuerten Treeview-Klasse unter Microsoft Visual FoxPro
Themenübersicht • Treeview-Control • Nodes • Images • LoadTree • LoadNodes • Konfiguration, interner Cursor • Events, Images • Metadatenstruktur • Aufrufreihenfolge • Sonstige Hinweise
Grundaufbau Treeview Die Komponenten des Treeview-Controls unterMicrosoft Visual FoxPro
Wo finde ich was? • Treeview-Control in COMCTL32.DLL • Hilfedatei unter COMCTL1.HLP oder CTRLREF.HLP • Stichwort: Strukturansicht (Treeview) • Beispiel unter ACTIVEX.VCX (Buch)
Eigenschaften: Visible, Enabled BorderStyle, LineStyle LabelEdit Scrollbars Height, Width, Top, Left Imagelist (!) Eigenschaften: Sorted Nodes (!) Treeview-Control (1)
Methoden: Clear SetFocus GetVisible, HitTest StartLabelEdit Remove SetFocus Refresh Ereignisse: Before/AfterLabel Edit Node/Click, DblClick Collapse, Expand DragDrop, DragOv MouseDo/Up/Move KeyDown/Up/Press Got/LostFocus Treeview-Control (2)
Eigenschaften: Enabled, Visible Text Index, Key Expanded(Image) (Selected)(Image) Root Methoden: Add (relative, relationship, key, text, image, selectedimag) Clear CreateDragImage EnsureVisible Item (Index / Key ) Remove (dito) Nodes-Control
Eigenschaften: BackColor MaskColor ImageHeigth /Width ListImages Index Name Eigenschaften: Tag Object Parent Methoden: Overlay ImageList-Control
Einfaches Treeview-Beispiel Einfaches Beispiel zur Treeview-Ansteuerung für Microsoft Visual FoxPro
LoadTree • Buch: Rod Paddock, ACTIVEX.VCX • (Code auch in „Notizen“ zu den Slides) • Parameter: Key, Parent Key, Description • This.Nodes.Add( ) • ggf. This.LoadNodes( ) • eigene Funktion
LoadNode • Parameter: DBF, Key, ParentOrder • SCAN-Schleife über Child • Node addieren • Recno merken (!) • Falls Subchilds: Rekursiver Aufruf • Recno wiederherstellen
Treeview-Klassenbibliothek Beispiel für eine Wrapper-Klasse um das Treeview-Control unter Microsoft Visual FoxPro
Konfiguration, interner Cursor • Konfigurationsmöglichkeit INI-Datei • Verwendung von GetPrivateProfileString() • Konfiguration der Metadatentabellen / Parameter • Verwendung INCLUDE-Datei • Konstanten/Funktionen in .h-Datei (genericname) • Datenablage in internem Cursor • Info-Funktion zum Auslesen Cursordaten • schneller als FindItem (durch Treeview scannen)
Events, Images • Herauslegung diverser Events • Collapse, Expand • Click, Doubleclick, Rightclick • Achtung: Unterscheidung nur Mousedown mögl. • Dynamisches Laden der Bitmaps • Referenz auf object.listimages • .Add( loadpicture( ) ) • Achtung: Keine numerischen Schlüssel
Metadatensteuerung Beispiel für eine Metadatensteuerung für das Treeview-Control unter Microsoft Visual FoxPro
STR-Metadatei • CID (Primärschlüssel) • SORT (Sortierkennzeichen) • CODE (externer Aufrufcode für Ebene) • RECCNT (Satzzähler einblenden) • NAME (Anzeigetext) • VALID (Gültigkeitsschalter) • Diverse Image-Felder • IMAGE / IMAGEEXPAN / IMAGEKEY / ..KEYEX / COND
STRPAGE-Metadatei Allgemein • CID (Primärschlüssel) • CPARENTCID (Zuordnung zu STR) • MODUL (Modulzuordnung für VCX-Laden) • VALID (Gültigkeitsschalter) • ENABLED (Element disabled dargestellt) • VISIBLE (Element sichtbar dargestellt) • READONLY (Element Readonly dargestellt)
STRPAGE-Metadatei (Sort 0) • SORT (0 für Zuordnung zu STR) • Diverse Tabellendaten • CHILD, CHILDALIAS für Tabelle • CHILDFK für Schlüssel • FILTER, CTYP für Filter und SET KEY-Eingrenzung • CAPTION / EVAL (Text in Treeview) • MENUE (Kontextmenü für Treeview) • CLASS / CLASSLIB (Managerklasse)
STRPAGE-Metadatei (Sort!=0) • SORT (Reihenfolge der Reiter in Pageframe) • Diverse Tabellendaten für Childtabelle • CHILD, CHILDALIAS für Tabelle • CHILDFK für Schlüssel • FILTER, CTYP für Filter und SET KEY-Eingrenzung • CAPTION / EVAL (Text für Reiter) • MENUE (Shortcut-Menü in Reiter) • CLASS / CLASSLIB (Container in Reiter)
Programmierung Treeview Programmierung einer Meta-datensteuerung für Treeviews unterMicrosoft Visual FoxPro
Initialisierung Metadaten • LoadTreeviewMetaData • OpenTreeviewStrTables • OpenTable • LoadClassLibsFromModules • AddLevel
Neue Ebene anlegen • AddLevel • AddLeveltoTreeview • AddManager • SetManager • AddPageFrame • AddPage
Navigieren im Treeview • NavigInTable • SetManager • NavigInAllPages • NavigInPage • NavigInTable
Custom-Page-Klasse • Custom Page-Klasse notwendig u.a. für folgende Methoden: • Activate( ) • RightClick( ) • ggf. ShowWhatsThis( )
Komplexere Steuerungen • Hierarchische Berechnungen sehr zeitaufwendig bei der Optimierung • Bei komplexeren Treeviews Trennung zwischen Manager- und Zeilenobjekt • Editor und Validier-Funktionen für Metadaten sinnvoll aber aufwendig
Sonstige Hinweise Sonstige Hinweise zum Einsatz des Treeview-Controls unterMicrosoft Visual FoxPro
Performance beim Aufbau • Kleiner Performance-Trick: • treeview.Visible = .F. • treeview.Top = treeview.Top + 9999 • *-- Treeview mit Daten füllen • treeview.Top = treeview.Top - 9999 • treeview.Visible = .T. (erspart Refresh-Zeiten des Treeviews)
Problem bei neuerer Version • COMCTL32.OCX ab 97 vergeßlich: • TreeView.Init: • this.object.ImageList = thisform.imagelist1.object • ListView.Init: • this.object.Icons = thisform.imagelist2.object • this.object.SmallIcons = thisform.imagelist3.object • Außerdem: • nicht abwärtskompatibel
Weitere Ideen • Wegschalten des Treeviews wie bei der neuen HTML-Hilfe von Visual FoxPro • Schalter für verschiedene Breite des Treeview-Controls zum Platzsparen • Multiple Instanzen von Masken mit/ohne Treeview-Control • „Abreißbare“ Pages als Einzelmasken
Was ist zu beachten? • Container um Treeview bauen • Interner Cursor für Daten-verwaltung • Events / Images • Metadaten sehr leistungsfähig • Neue Versionen!
Vielen Dank! Das waren die Themen: • Treeview-Control • Nodes • Images • LoadTree • LoadNodes • Konfiguration, interner Cursor • Events, Images • Metadatenstruktur • Aufrufreihenfolge • Programmierhinweise • Sonstige Hinweise...
Wenn Fragen bestehen: Wizards & Builders Methodische Software-Entwicklung GmbH Frankfurter Str. 21b 61476 Kronberg Tel.: 06173-950906 Fax: 06173-950907 CIS: 101605,175