Wizards & Wizards & Builders GmbH Builders GmbH
Ansteuerung von Ansteuerung von TreeviewTreeview
Die Ansteuerung desDie Ansteuerung desMS Treeview-Controls unterMS Treeview-Controls unter
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Diese Schulung dient der Einführung in die Ansteuerung von
Treeview-Controls sowie der Darstellung einer Meta-
datengesteuerten Treeview-Klasse unter Microsoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
ThemenübersichtThemenübersicht
Treeview-ControlTreeview-Control NodesNodes ImagesImages LoadTreeLoadTree LoadNodesLoadNodes Konfiguration, interner CursorKonfiguration, interner Cursor Events, ImagesEvents, Images MetadatenstrukturMetadatenstruktur AufrufreihenfolgeAufrufreihenfolge Sonstige HinweiseSonstige Hinweise
Wizards & Wizards & Builders GmbH Builders GmbH
Grundaufbau TreeviewGrundaufbau Treeview
Die Komponenten des Die Komponenten des Treeview-Controls unterTreeview-Controls unterMicrosoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Wo finde ich was?Wo finde ich was?
Treeview-Control in COMCTL32.DLLTreeview-Control in COMCTL32.DLL Hilfedatei unter COMCTL1.HLP oder Hilfedatei unter COMCTL1.HLP oder
CTRLREF.HLPCTRLREF.HLP Stichwort: Strukturansicht Stichwort: Strukturansicht
(Treeview)(Treeview) Beispiel unter ACTIVEX.VCX (Buch)Beispiel unter ACTIVEX.VCX (Buch)
Wizards & Wizards & Builders GmbH Builders GmbH
Treeview-Control (1)Treeview-Control (1)
Eigenschaften:Eigenschaften: Visible, EnabledVisible, Enabled BorderStyle, BorderStyle,
LineStyleLineStyle LabelEditLabelEdit ScrollbarsScrollbars Height, Width, Height, Width,
Top, LeftTop, Left Imagelist (!)Imagelist (!)
Eigenschaften:Eigenschaften: SortedSorted
Nodes (!)Nodes (!)
Wizards & Wizards & Builders GmbH Builders GmbH
Treeview-Control (2)Treeview-Control (2)
Methoden:Methoden: ClearClear SetFocusSetFocus GetVisible, HitTestGetVisible, HitTest StartLabelEditStartLabelEdit RemoveRemove SetFocusSetFocus RefreshRefresh
Ereignisse:Ereignisse: Before/AfterLabel EditBefore/AfterLabel Edit Node/Click, DblClickNode/Click, DblClick Collapse, ExpandCollapse, Expand DragDrop, DragOvDragDrop, DragOv MouseDo/Up/MoveMouseDo/Up/Move KeyDown/Up/PressKeyDown/Up/Press Got/LostFocusGot/LostFocus
Wizards & Wizards & Builders GmbH Builders GmbH
Nodes-ControlNodes-Control
Eigenschaften:Eigenschaften: Enabled, VisibleEnabled, Visible TextText Index, KeyIndex, Key Expanded(Image)Expanded(Image) (Selected)(Image)(Selected)(Image) RootRoot
Methoden:Methoden: Add Add (relative, (relative,
relationship, key, text, relationship, key, text, image, selectedimag)image, selectedimag)
ClearClear CreateDragImageCreateDragImage EnsureVisibleEnsureVisible Item (Index / Key )Item (Index / Key ) Remove (dito)Remove (dito)
Wizards & Wizards & Builders GmbH Builders GmbH
ImageList-ControlImageList-Control
Eigenschaften:Eigenschaften: BackColorBackColor MaskColorMaskColor ImageHeigth /ImageHeigth /
WidthWidth ListImagesListImages IndexIndex NameName
Eigenschaften:Eigenschaften: TagTag ObjectObject ParentParent
Methoden:Methoden: OverlayOverlay
Wizards & Wizards & Builders GmbH Builders GmbH
Einfaches Treeview-Einfaches Treeview-BeispielBeispiel
Einfaches Beispiel zur Einfaches Beispiel zur Treeview-Ansteuerung für Treeview-Ansteuerung für
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
LoadTreeLoadTree
Buch: Rod Paddock, ACTIVEX.VCXBuch: Rod Paddock, ACTIVEX.VCX (Code auch in „Notizen“ zu den Slides)(Code auch in „Notizen“ zu den Slides)
Parameter: Parameter: Key, Parent Key, Key, Parent Key, DescriptionDescription
This.Nodes.Add( )This.Nodes.Add( ) ggf. This.LoadNodes( )ggf. This.LoadNodes( )
eigene Funktioneigene Funktion
Wizards & Wizards & Builders GmbH Builders GmbH
LoadNodeLoadNode
Parameter: DBF, Key, ParentOrderParameter: DBF, Key, ParentOrder SCAN-Schleife über ChildSCAN-Schleife über Child Node addierenNode addieren Recno merken (!)Recno merken (!) Falls Subchilds: Rekursiver AufrufFalls Subchilds: Rekursiver Aufruf Recno wiederherstellenRecno wiederherstellen
Wizards & Wizards & Builders GmbH Builders GmbH
Treeview-Treeview-KlassenbibliothekKlassenbibliothek
Beispiel für eine Wrapper-Beispiel für eine Wrapper-Klasse um das Treeview-Klasse um das Treeview-
Control unter Control unter Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Konfiguration, interner Konfiguration, interner CursorCursor
Konfigurationsmöglichkeit INI-DateiKonfigurationsmöglichkeit INI-Datei Verwendung von GetPrivateProfileString()Verwendung von GetPrivateProfileString() Konfiguration der Metadatentabellen / ParameterKonfiguration der Metadatentabellen / Parameter
Verwendung INCLUDE-DateiVerwendung INCLUDE-Datei Konstanten/Funktionen in .h-Datei (genericname)Konstanten/Funktionen in .h-Datei (genericname)
Datenablage in internem CursorDatenablage in internem Cursor Info-Funktion zum Auslesen CursordatenInfo-Funktion zum Auslesen Cursordaten schneller als FindItem (durch Treeview scannen)schneller als FindItem (durch Treeview scannen)
Wizards & Wizards & Builders GmbH Builders GmbH
Events, ImagesEvents, Images
Herauslegung diverser EventsHerauslegung diverser Events Collapse, ExpandCollapse, Expand Click, Doubleclick, RightclickClick, Doubleclick, Rightclick Achtung: Unterscheidung nur Mousedown Achtung: Unterscheidung nur Mousedown
mögl.mögl.
Dynamisches Laden der BitmapsDynamisches Laden der Bitmaps Referenz auf object.listimagesReferenz auf object.listimages .Add( loadpicture( ) ).Add( loadpicture( ) ) Achtung: Keine numerischen SchlüsselAchtung: Keine numerischen Schlüssel
Wizards & Wizards & Builders GmbH Builders GmbH
MetadatensteuerungMetadatensteuerung
Beispiel für eine Beispiel für eine Metadatensteuerung für das Metadatensteuerung für das
Treeview-Control unter Treeview-Control unter Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
STR-MetadateiSTR-Metadatei
CID (Primärschlüssel)CID (Primärschlüssel) SORT (Sortierkennzeichen)SORT (Sortierkennzeichen) CODE (externer Aufrufcode für Ebene)CODE (externer Aufrufcode für Ebene) RECCNT (Satzzähler einblenden)RECCNT (Satzzähler einblenden) NAME (Anzeigetext)NAME (Anzeigetext) VALID (Gültigkeitsschalter)VALID (Gültigkeitsschalter) Diverse Image-FelderDiverse Image-Felder
IMAGE / IMAGEEXPAN / IMAGEKEY / ..KEYEX / CONDIMAGE / IMAGEEXPAN / IMAGEKEY / ..KEYEX / COND
Wizards & Wizards & Builders GmbH Builders GmbH
STRPAGE-Metadatei STRPAGE-Metadatei AllgemeinAllgemein
CID (Primärschlüssel)CID (Primärschlüssel) CPARENTCID (Zuordnung zu STR)CPARENTCID (Zuordnung zu STR) MODUL (Modulzuordnung für VCX-Laden)MODUL (Modulzuordnung für VCX-Laden) VALID (Gültigkeitsschalter)VALID (Gültigkeitsschalter) ENABLED (Element disabled dargestellt)ENABLED (Element disabled dargestellt) VISIBLE (Element sichtbar dargestellt)VISIBLE (Element sichtbar dargestellt) READONLY (Element Readonly READONLY (Element Readonly
dargestellt)dargestellt)
Wizards & Wizards & Builders GmbH Builders GmbH
STRPAGE-Metadatei (Sort 0)STRPAGE-Metadatei (Sort 0)
SORT (0 für Zuordnung zu STR)SORT (0 für Zuordnung zu STR) Diverse TabellendatenDiverse Tabellendaten
CHILD, CHILDALIAS für TabelleCHILD, CHILDALIAS für Tabelle CHILDFK für SchlüsselCHILDFK für Schlüssel FILTER, CTYP für Filter und SET KEY-EingrenzungFILTER, CTYP für Filter und SET KEY-Eingrenzung
CAPTION / EVAL (Text in Treeview)CAPTION / EVAL (Text in Treeview) MENUE (Kontextmenü für MENUE (Kontextmenü für
Treeview)Treeview) CLASS / CLASSLIB (Managerklasse)CLASS / CLASSLIB (Managerklasse)
Wizards & Wizards & Builders GmbH Builders GmbH
STRPAGE-Metadatei (Sort!STRPAGE-Metadatei (Sort!=0)=0)
SORT (Reihenfolge der Reiter in SORT (Reihenfolge der Reiter in Pageframe)Pageframe)
Diverse Tabellendaten für ChildtabelleDiverse Tabellendaten für Childtabelle CHILD, CHILDALIAS für TabelleCHILD, CHILDALIAS für Tabelle CHILDFK für SchlüsselCHILDFK für Schlüssel FILTER, CTYP für Filter und SET KEY-EingrenzungFILTER, CTYP für Filter und SET KEY-Eingrenzung
CAPTION / EVAL (Text für Reiter)CAPTION / EVAL (Text für Reiter) MENUE (Shortcut-Menü in Reiter)MENUE (Shortcut-Menü in Reiter) CLASS / CLASSLIB (Container in Reiter)CLASS / CLASSLIB (Container in Reiter)
Wizards & Wizards & Builders GmbH Builders GmbH
Programmierung Programmierung TreeviewTreeview
Programmierung einer Meta-Programmierung einer Meta-datensteuerung für Treeviews datensteuerung für Treeviews
unterunterMicrosoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Initialisierung MetadatenInitialisierung Metadaten
LoadTreeviewMetaDataLoadTreeviewMetaData OpenTreeviewStrTablesOpenTreeviewStrTables OpenTableOpenTable LoadClassLibsFromModulesLoadClassLibsFromModules AddLevelAddLevel
Wizards & Wizards & Builders GmbH Builders GmbH
Neue Ebene anlegenNeue Ebene anlegen
AddLevelAddLevel AddLeveltoTreeviewAddLeveltoTreeview AddManagerAddManager SetManagerSetManager AddPageFrameAddPageFrame AddPageAddPage
Wizards & Wizards & Builders GmbH Builders GmbH
Navigieren im TreeviewNavigieren im Treeview
NavigInTableNavigInTable SetManagerSetManager NavigInAllPagesNavigInAllPages NavigInPageNavigInPage NavigInTableNavigInTable
Wizards & Wizards & Builders GmbH Builders GmbH
Custom-Page-KlasseCustom-Page-Klasse
Custom Page-Klasse Custom Page-Klasse notwendig u.a. für folgende notwendig u.a. für folgende Methoden:Methoden:
Activate( )Activate( ) RightClick( )RightClick( ) ggf. ShowWhatsThis( )ggf. ShowWhatsThis( )
Wizards & Wizards & Builders GmbH Builders GmbH
Komplexere SteuerungenKomplexere Steuerungen
Hierarchische Berechnungen sehr Hierarchische Berechnungen sehr zeitaufwendig bei der Optimierungzeitaufwendig bei der Optimierung
Bei komplexeren Treeviews Bei komplexeren Treeviews Trennung zwischen Manager- und Trennung zwischen Manager- und ZeilenobjektZeilenobjekt
Editor und Validier-Funktionen für Editor und Validier-Funktionen für Metadaten sinnvoll aber aufwendigMetadaten sinnvoll aber aufwendig
Wizards & Wizards & Builders GmbH Builders GmbH
Sonstige HinweiseSonstige Hinweise
Sonstige Hinweise zum Einsatz Sonstige Hinweise zum Einsatz des Treeview-Controls unterdes Treeview-Controls unter
Microsoft Visual FoxProMicrosoft Visual FoxPro
Wizards & Wizards & Builders GmbH Builders GmbH
Performance beim AufbauPerformance beim Aufbau
Kleiner Performance-Trick: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)(erspart Refresh-Zeiten des Treeviews)
Wizards & Wizards & Builders GmbH Builders GmbH
Problem bei neuerer Problem bei neuerer VersionVersion
COMCTL32.OCX ab 97 vergeßlich:COMCTL32.OCX ab 97 vergeßlich: TreeView.Init:TreeView.Init: this.object.ImageList = thisform.imagelist1.object
ListView.Init:ListView.Init: this.object.Icons = thisform.imagelist2.object
this.object.SmallIcons = thisform.imagelist3.object
Außerdem:Außerdem: nicht abwärtskompatibelnicht abwärtskompatibel
Wizards & Wizards & Builders GmbH Builders GmbH
Weitere IdeenWeitere Ideen
Wegschalten des Treeviews wie bei der Wegschalten des Treeviews wie bei der neuen HTML-Hilfe von Visual FoxProneuen HTML-Hilfe von Visual FoxPro
Schalter für verschiedene Breite des Schalter für verschiedene Breite des Treeview-Controls zum PlatzsparenTreeview-Controls zum Platzsparen
Multiple Instanzen von Masken mit/ohne Multiple Instanzen von Masken mit/ohne Treeview-ControlTreeview-Control
„„Abreißbare“ Pages als EinzelmaskenAbreißbare“ Pages als Einzelmasken
Wizards & Wizards & Builders GmbH Builders GmbH
Was ist zu beachten?Was ist zu beachten?
Container um Container um Treeview bauenTreeview bauen
Interner Cursor für Interner Cursor für Daten-verwaltungDaten-verwaltung
Events / ImagesEvents / Images Metadaten sehr Metadaten sehr
leistungsfähig leistungsfähig Neue Versionen!Neue Versionen!
Wizards & Wizards & Builders GmbH Builders GmbH
Vielen Dank!Vielen Dank!
Das waren die Themen:Das waren die Themen: Treeview-ControlTreeview-Control NodesNodes ImagesImages LoadTreeLoadTree LoadNodesLoadNodes Konfiguration, interner Konfiguration, interner
CursorCursor Events, ImagesEvents, Images MetadatenstrukturMetadatenstruktur AufrufreihenfolgeAufrufreihenfolge ProgrammierhinweiseProgrammierhinweise Sonstige Hinweise...Sonstige Hinweise...
Wizards & Wizards & Builders GmbH Builders GmbH
Wenn Fragen bestehen:Wenn Fragen bestehen:
Wizards & BuildersWizards & BuildersMethodische Software-Methodische Software-
Entwicklung GmbHEntwicklung GmbH
Frankfurter Str. 21bFrankfurter Str. 21b
61476 Kronberg61476 Kronberg
Tel.: 06173-950906Tel.: 06173-950906
Fax: 06173-950907Fax: 06173-950907
CIS: 101605,175CIS: 101605,175