| |
Fortgeschrittene ProgrammierungKnoten im Treeview finden | | | Autor: Struppi | Datum: 19.04.14 11:52 |
| Hallo zusammen,
ich habe ein Treeview für TechnischePlätze angelegt mit ca 9000 TechnischePlätze.
Das Treeview besteht aus 9 Ebenen. Wenn ich jetzt einen Datensatz anklicke, so möchte ich das
der entsprechende Knoten geöffnet und selektiert ist.
Wie kann ich unter den vielen Knoten (Parent und 8 childs) den richtigen Knoten finden.
Ich programmiere noch mit VB6.
Bedanke mich schon jetzt für Eure Unterstützung und wünsche Frohe Ostern.
Gruß Struppi | |
Re: Knoten im Treeview finden | | | Autor: Franki | Datum: 23.04.14 01:30 |
| Hallo,
deine Frage ist etwas zu ungenau...
Zitat: | |
Das Treeview besteht aus 9 Ebenen. Wenn ich jetzt einen
Datensatz anklicke, so möchte ich das
der entsprechende Knoten geöffnet und selektiert ist.
| |
Wenn du im Treeview etwas in einer untergeordneten Ebene anklicken kannst, dann ist die Ebene doch schon zumindest soweit geöffnet, denn sonst könntest du den entsprechenden Child (der auch ein Parent sein könnte) ja nicht anklicken. Und selektiert ist er normalerweise auch wenn du ihn angeklickt hast.
Was genau meinst du denn mit Datensatz? Ein Treeview hat eigentlich keine Datensätze. Hast du vielleicht eine Kombination von Treeview und Listview und willst im Listview etwas anklicken?
Zitat: | |
Wie kann ich unter den vielen Knoten (Parent und 8 childs)
den richtigen Knoten finden.
| |
Was hast du denn für eine Datenbasis aus der dein Treeview gefüllt wird? Wenn du keine hast, dann musst du dich halt durchhangeln, wenn da z.B. eine DB dahinter steckt kannst du das auch über eine SQL Abfrage evtl. einfacher ermitteln. Kommt ganz drauf an was du machen möchtest.
Zitat: | |
Ich programmiere noch mit VB6.
| |
Das spielt in diesem Fall keine Rolle, denn der Aufbau, bzw. die optische Darstellung von Treeview und oder Listview ist identisch von den Abhängigkeiten was wo angezeit wird, angeklickt werden kann usw. Das gleiche Problem hättest du auch unter .NET oder sogar uraltem DOS 6. Da gab es auch schon den Befehl "tree"
Gruß
Frank
| |
Re: Knoten im Treeview finden | | | Autor: Struppi | Datum: 24.04.14 13:13 |
| Hallo Franki,
vielen Dank für Deine Info.
Ich habe zwei Registerkarten, auf der Einen zeige ich z.B. Motordaten an.
Dann hole ich mir aus einer anderen Tabelle die TechnischenPlätze (Standorte die es in der Firma gibt)
Diese zeige ich als TreeView auf der 2. Registerkarte an. Wenn jetzt ein neuer Motor eingefügt wird, so kann ich zur 2. Registerkarte wechsel, den entsprechenden TechnischenPlatz aus dem Treeview anwählen und schon hat der Motor die entsprechende TechnischerPlatz-Nummer.
Dies funktioniert auch tadellos. Jetzt möchte ich aber in der 1. Registerkarte einen bestimmten Motor auswählen und dann sollte beim Wechsel auf die 2.Registerkarte der Knoten geöffnet und selektiert sein, der dem TechnischenPlatz des Motors entspricht.
Das heißt ich benötige eine Find Funktion die den entsprechenden Knoten findet.
Im Internet finde ich nur bis zu 2 Ebenen aber ich benötige 9 Ebenen.
Gruß Dirk | |
Re: Knoten im Treeview finden | | | Autor: benne | Datum: 06.05.14 17:06 |
| Hallo Struppi,
ein Knoten hat immer eine eindeutige ID.
Ich spreche meine Nodes immer über die ID an, mit folgendem Format:
ID_Indexname:WertIndex
Wenn also der Index für den Datensatz ID-MOTOR heißt und der Wert 4711 ist, dann hat
der Knoten den Schlüssel: ID_MOTOR:4711
Den Doppelpunkt nehme ich, damit ich später wieder Name und Wert des Schlüssels trennen kann.
So kann ich beim Anklicken eines Knotens spezifisch darauf reagieren.
Nach diesem Schema kann ich auch in großen Bäumen direkt den Knoten anwählen.
Allerdings macht eine Treeviev mit 9000 Knoten irgendwie keinen Sinn.
Ich hoffe, das hilft dir weiter.
Gruß
Benne
| |
Re: Knoten im Treeview finden | | | Autor: Struppi | Datum: 07.05.14 15:11 |
| Hallo benne,
danke für Deine Info.
Kannst Du mir ein kleines Beispiel mit Programmcode zeigen damit
ich es vielleicht besser verstehe ?
Vielen Dank.
Übrigens : Wenn man die Technischen Plätze einer Firma als Baum darstellen will
kommen schon sehr viele Knoten zusammen. (Bei mir max. 9 Ebenen)
Gruß Struppi | |
Re: Knoten im Treeview finden | | | Autor: benne | Datum: 08.05.14 15:16 |
| Hallo Struppi,
als Ebene verstehe ich eine Hierarchie die übereinander angeordnet ist.
Also:
Staaten
Länder
Kreise
Gemeinden
Bezirke
oder
Standorte
Hallen
Regale
Fächer
Schubladen
9 Ebenen sind ganz schön viel.
Um dir wirklich zu helfen, sollten wir wissen, auf welcher Datenbasis die ganze Geschichte läuft.
Sind die Ebenen jeweils in einer eigenen Tabelle?
Gibt es eindeutige Bezeichner? (ideal als Integer )
Damit das dann auch funktioniert müssten die Tabellen mit 1:n verknüpft sein.
Beispiel:
Standorte:
ID_Standort=1 , Deutschland
ID_Standort=2 , USA
ID_Standort=3 , China
Hallen:
ID_Standort=1, ID_Halle=1 , grüne Halle
ID_Standort=1, ID_Halle=2 , rote Halle
ID_Standort=2, ID_Halle=3 , blaue Halle
Regale:
ID_Halle=2, ID_Regal=4711 , Regal ABCD
Somit weiß man, das das Regal ABCD in der roten Halle in Deutschland ist.
Jede Tabelle bezieht sich auf den Index der darüberliegenden Tabelle.
Schick mal dein Datenmodell, dann sehen wir weiter.
Bevor man in den Programmcode geht, sollte man zuerst die Daten analysieren.
Gruß
Bernd
| |
Re: Knoten im Treeview finden | | | Autor: Struppi | Datum: 10.05.14 14:31 |
| Hallo benne,
Do While Not dyTP1.EOF 'Ebene2
varTechnischerPlatz = dyTP1.Fields(0)
varEbene1 = BezEbene(varTechnischerPlatz, "1") 'MLHIDE
If Not NewNode Is Nothing Then
varKeyE1 = varTechnischerPlatz
Set NewNode = TreeView1.Nodes.add("TP-" & varKeyE0, tvwChild, "TP-" & varKeyE1, varEbene1, "open") 'MLHIDE
NewNode.Tag = varTechnischerPlatz
NewNode.ExpandedImage = "open" 'MLHIDE
NewNode.Image = "closed" 'MLHIDE
NewNode.EnsureVisible
End If
dyTP1.MoveNext ' Bewegen zum nächsten Publishers-Datensatz.
Loop
varKeyE0 ist hier eine eindeutige Nummer die in etwa so aussieht :
07-010-020-070-010-020-030-040-020
Jeder Nummernblock ist eine Ebene.
Ich möchte jetzt, wenn ich im Datensatz von, z.B. Motore, blättere, das wenn der Motor einen TechnischenPlatz hat, dieser entsprechende Knoten aktiviert ist wenn ich zur Baumanzeige wechsel.
Vielen Dank für Deine Bemühungen.
Ein schönes Wochenende
Gruß Struppi | |
Re: Knoten im Treeview finden | | | Autor: benne | Datum: 12.05.14 07:55 |
| Hi,
so richtig verstanden habe ich das jetzt nicht.
Du legst den Node an und beziehst dich auf ein Parent, ebenfalls mit "TP-xxx" als Key.
Wie viele Tabellen gibt es denn? Wo ist die Logik?
Mit fällt noch auf, dass der Befehl node.ensurevisible beim Anlegen keinen Sinn macht.
Die Laufzeit wird dadurch verlängert. Außerdem wird der Tree ohnehin mit .painting = false aufgebaut.
Vielleicht können andere User deine Daten besser verstehen?
mfg
Benne
| |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|