Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Ansteuerung von Treeview

Ähnliche Präsentationen


Präsentation zum Thema: "Ansteuerung von Treeview"—  Präsentation transkript:

1 Ansteuerung von Treeview
Die Ansteuerung des MS Treeview-Controls unter Microsoft Visual FoxPro

2 Diese Schulung dient der Einführung in die Ansteuerung von Treeview-Controls sowie der Darstellung einer Meta- datengesteuerten Treeview-Klasse unter Microsoft Visual FoxPro

3 Themenübersicht Treeview-Control Nodes Images LoadTree LoadNodes
Konfiguration, interner Cursor Events, Images Metadatenstruktur Aufrufreihenfolge Sonstige Hinweise

4 Die Komponenten des Treeview-Controls unter Microsoft Visual FoxPro
Grundaufbau Treeview Die Komponenten des Treeview-Controls unter Microsoft Visual FoxPro

5 Wo finde ich was? Treeview-Control in COMCTL32.DLL
Hilfedatei unter COMCTL1.HLP oder CTRLREF.HLP Stichwort: Strukturansicht (Treeview) Beispiel unter ACTIVEX.VCX (Buch)

6 Treeview-Control (1) Eigenschaften: Eigenschaften: Visible, Enabled
BorderStyle, LineStyle LabelEdit Scrollbars Height, Width, Top, Left Imagelist (!) Eigenschaften: Sorted Nodes (!)

7 Treeview-Control (2) Methoden: Ereignisse: Clear SetFocus
GetVisible, HitTest StartLabelEdit Remove Refresh Ereignisse: Before/AfterLabel Edit Node/Click, DblClick Collapse, Expand DragDrop, DragOv MouseDo/Up/Move KeyDown/Up/Press Got/LostFocus

8 Nodes-Control 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)

9 ImageList-Control Eigenschaften: BackColor MaskColor
ImageHeigth / Width ListImages Index Name Eigenschaften: Tag Object Parent Methoden: Overlay

10 Einfaches Treeview-Beispiel
Einfaches Beispiel zur Treeview-Ansteuerung für Microsoft Visual FoxPro

11 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 *-- Method loadTree *-- This method receives a table with a minimum of three *-- fields: *-- 1) A primary key field *-- 2) A parent key field *-- 3) A description field. *-- The root nodes of the tree view are the fields where *-- primary key = parentkey. This function is passed the alias of the *-- table and then calles the loadnode function. Lparameters pcTable, pcParentOrder *-- Save the work area Local lnSelect lnSelect = Select() Select (pcTable) Scan For parentkey = primarykey This.Nodes.Add(,,"KEY" + &pcTable..primarykey, &pcTable..description) *-- If this is a parent then load the parent records. If Seek(&pcTable..primarykey,pcTable,pcParentOrder) This.LoadNode(pcTable, &pcTable..parentkey,pcParentOrder) Endif Endscan *-- Restore the work area Select (lnSelect)

12 LoadNode Parameter: DBF, Key, ParentOrder SCAN-Schleife über Child
Node addieren Recno merken (!) Falls Subchilds: Rekursiver Aufruf Recno wiederherstellen *-- Method LoadNode Lparameters pcTable, pcKeyToLoad, pcParentOrder *-- Save the work area Local lnSelect, lnRecno, lnRecno2, lcPrimaryKey lnSelect = Select() lnRecno = Recno() Select (pcTable) Go Top Scan For parentkey = pcKeyToLoad lcPrimaryKey = &pcTable..primarykey If &pcTable..parentkey # lcPrimaryKey This.Nodes.Add("KEY" + pcKeyToLoad,4,"KEY" + lcPrimaryKey, &pcTable..description) *-- Save the record pointer prior to the child test lnRecno2 = Recno() *-- If this record is a parent then load its children If Seek(lcPrimaryKey,pcTable,pcParentOrder) This.LoadNode(pcTable, lcPrimarykey,pcParentOrder) Endif *-- Restore the record pointer If lnRecno2 # 0 Goto lnRecno2 Endscan *-- Restore the work area Select (lnSelect) If lnRecno # 0 Goto lnRecno

13 Treeview-Klassenbibliothek
Beispiel für eine Wrapper-Klasse um das Treeview-Control unter Microsoft Visual FoxPro

14 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)

15 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

16 Metadatensteuerung Beispiel für eine Metadatensteuerung für das Treeview-Control unter Microsoft Visual FoxPro

17 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

18 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)

19 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)

20 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)

21 Programmierung Treeview
Programmierung einer Meta-datensteuerung für Treeviews unter Microsoft Visual FoxPro

22 Initialisierung Metadaten
LoadTreeviewMetaData OpenTreeviewStrTables OpenTable LoadClassLibsFromModules AddLevel

23 Neue Ebene anlegen AddLevel AddLeveltoTreeview AddManager SetManager
AddPageFrame AddPage

24 Navigieren im Treeview
NavigInTable SetManager NavigInAllPages NavigInPage

25 Custom-Page-Klasse Custom Page-Klasse notwendig u.a. für folgende Methoden: Activate( ) RightClick( ) ggf. ShowWhatsThis( )

26 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

27 Sonstige Hinweise Sonstige Hinweise zum Einsatz des Treeview-Controls unter Microsoft Visual FoxPro

28 Performance beim Aufbau
Kleiner Performance-Trick: treeview.Visible = .F. treeview.Top = treeview.Top *-- Treeview mit Daten füllen treeview.Top = treeview.Top treeview.Visible = .T. (erspart Refresh-Zeiten des Treeviews)

29 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

30 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

31 Was ist zu beachten? Container um Treeview bauen
Interner Cursor für Daten-verwaltung Events / Images Metadaten sehr leistungsfähig Neue Versionen!

32 Vielen Dank! Das waren die Themen: Treeview-Control Nodes Images
LoadTree LoadNodes Konfiguration, interner Cursor Events, Images Metadatenstruktur Aufrufreihenfolge Programmierhinweise Sonstige Hinweise...

33 Wenn Fragen bestehen: Wizards & Builders Frankfurter Str. 21b
Methodische Software-Entwicklung GmbH Frankfurter Str. 21b 61476 Kronberg Tel.: Fax: CIS: ,175


Herunterladen ppt "Ansteuerung von Treeview"

Ähnliche Präsentationen


Google-Anzeigen