WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 16.01.2001, 14:42   #1
Andy020
Master
 
Registriert seit: 22.03.2000
Beiträge: 506


Ausrufezeichen

Ein freundliches Hallo an alle!

Wie schon in meinem Beitrag "Access 2000 - Spezialisten unter euch?" im Software-Forum erwähnt, möchte ich in eine Access Datenbank eine "explorerartige" Hierarchie bzw. ein solches Menü erstellen.

Nun habe ich ein OCX-Objekt gefunden, welches genau das unterstützt und wollte mal so fragen ob schon wer mit dem Objekt "Microsoft TREE VIEW Control Version 6 oder Version 5" Erfahrung hat oder es einfach nur kennt, irgendwo gesehen hat, mir einfach irgendwelche Tips in Bezug auf die Verwendung geben kann?

Dieses OXC-Objekt ist bei Access 2000 schon dabei und muss nicht extra eingebunden werden. (Nur als kleiner Hinweis)

Wäre vielleicht auch toll, wenn wer dieses Objekt schon mal in ein Access Formular eingebunden hat und mir eine abgespeckte Version der Datenbank schicken könnte um mir das nur beispielweise anzusehen.

Verbindlichsten Dank im Voraus ...

Auf Antworten hofft

Andy

Happy Posting

Andy020 ist offline   Mit Zitat antworten
Alt 17.01.2001, 20:39   #2
Jaguar
Classic Car Driver
 
Benutzerbild von Jaguar
 
Registriert seit: 16.02.2000
Ort: Wien
Beiträge: 569

Mein Computer

Beitrag

<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Original erstellt von Andy020:

Dieses OXC-Objekt ist bei Access 2000 schon dabei und muss nicht extra eingebunden werden. (Nur als kleiner Hinweis)

[/b]<HR></BLOCKQUOTE>

... jein is es ned wirklich. nur wenn man die zusatz-ocx module installiert. ein system mit access 2000 muß nicht unbedingt das treeview control dabei haben!!!!
ich schick dir ne mail mit der beschreibung des treeview docs (auszug aus der msdn) und ner weiteren beschreibung, welche module du für das treeview control brauchst

Jaguar ist offline   Mit Zitat antworten
Alt 18.01.2001, 09:39   #3
Andy020
Master
 
Registriert seit: 22.03.2000
Beiträge: 506


Beitrag

Erstmals recht herzlichen Dank für deine Mühe!

Ich bin allerdings schon ein kleines Stück weiter als dieses Posting hier noch vermuten lässt.

Ich hab meine Anfrage im Forum Programmierung & im Forum Software gestellt, weil ich mir gedacht hatte, dass das eher ein komplexes Problem ist und die Chancen auf Antworten so schrumpfen. Aber da hatte ich euch wohl unterschätzt.

Hier nochmal der bisherige Verlauf im Software forum ....

======================
1. Posting von mir ...
======================

Ein freundliches Hallo an alle!
Wie schon in meinem Beitrag "Access 2000 - Spezialisten unter euch?" erwähnt, möchte ich in eine Access Datenbank eine "explorerartige" Hierarchie bzw. ein solches Menü erstellen.

Nun habe ich ein OCX-Objekt gefunden, welches genau das unterstützt und wollte mal so fragen ob schon wer mit dem Objekt "TREEVIEW" Erfahrung hat oder es einfach nur kennt, irgendwo gesehen hat, mir einfach irgendwelche Tips in Bezug auf die Verwendung geben kann?

Dieses OXC-Objekt ist bei Access 2000 schon dabei und muss nicht extra eingebunden werden. (Nur als kleiner Hinweis)

Wäre vielleicht auch toll, wenn wer dieses Objekt schon mal in ein Access Formular eingebunden hat und mir eine abgespeckte Version der Datenbank schicken könnte um mir das nur beispielweise anzusehen.

Verbindlichsten Dank im Voraus ...

Andy

Happy Posting

=======================
2. Posting von keop ...
=======================

da bin ich voll überfragt, würde mich aber auch sehr interessieren.
-----------------
mfg -keop-

================================
3. Posting von Punschkrapfen ...
================================

zu dem control gibt es das Handbuch von Microsoft auf http://msdn.microsoft.com/library/de...bjTreeView.htm .
Jedes Element ist ein Node-Object, die man mit der Add-method in der nodes-collection hinzufügen kann, zb (lt. http://msdn.microsoft.com/library/de...bpronodesx.htm ):
Dim nodX As Node
Set nodX = TreeView1.Nodes.Add(,,"R","Root")
Set nodX = TreeView1.Nodes.Add("R", tvwChild,"C1","Child 1")
Set nodX = TreeView1.Nodes.Add("R", tvwChild,"C2","Child 2")
Set nodX = TreeView1.Nodes.Add("R", tvwChild,"C3","Child 3")
Set nodX = TreeView1.Nodes.Add("R", tvwChild,"C4","Child 4")

wenn man wissen will, über welchem objekt sich die maus gerade befindet, dann gibt es die HitTest-method ( http://msdn.microsoft.com/library/de...mthhittest.htm ). SelectedItem kann man auch verwenden ([url=http://msdn.microsoft.com/library/devprods/vs6/vbasic/cmctl198/vbproselecteditem.htm]http://msdn.microsoft.com/library/devprods/vs6/vbasic/cmctl198/vbproselecteditem.htm[/url ]) wenn der User zB auf einen commandbutton clickt.
Das ist aber alles für VB; das OCX reagiert aber überall gleich. Im Excel könnte man zB den Inhalt zweier cols so übertragen:

Private Sub CommandButton1_Click()
Dim nodx As Node
Dim col, row As Integer

Label1.Caption = Excel.ActiveCell.Text
TreeView1.Nodes.Clear
Set nodx = TreeView1.Nodes.Add(, , "R", Excel.ActiveCell.Text)
col = Excel.ActiveCell.Column
row = Excel.ActiveCell.row
col = col + 1
row = row + 1
Do While Len(Excel.Cells(row, col)) &gt; 0
Set nodx = TreeView1.Nodes.Add("R", tvwChild, "C" & LTrim(Str(row)), Excel.Cells(row, col))
row = row + 1
Loop
End Sub

usw ...

======================
4. Posting von mir ...
======================

Erstmal recht herzlichen Dank Punschkrapfen!
Das hat mir schon mal geholfen das Objekt mit Elementen zu füttern, , die auch angezeigt werden ... wahnsinn.

Jetzt würde ich nur noch gerne wissen wie ich bei einem Click auf eine Node ein Ereignis hervorrufe bzw. eine Funktion oder Makro starte dass z.B. ein Formular öffnet.

Nehmen wir z.B. diese Node als Beispiel ...
Set nodX = Me!xTree.Nodes.Add("C1", tvwChild, "D1", "Makro starten")

Was muss ich da machen, dass jetzt das Makro gestartet wird?

Bin dir für deine Hilfe wirklich dankbar!

Andy

Happy Posting


=====================================

Das ist also die aktuelle Lage, vielleicht kannst du mir weiterhelfen.

Wie kann ich bei Klicks auf Nodes in dem TreeView Element Aktionen starten?

Bin dir, sowie allen anderen für ihre Hilfe sehr dankbar!

Happy Posting

Andy

Andy020 ist offline   Mit Zitat antworten
Alt 18.01.2001, 11:40   #4
Jaguar
Classic Car Driver
 
Benutzerbild von Jaguar
 
Registriert seit: 16.02.2000
Ort: Wien
Beiträge: 569

Mein Computer

Beitrag

mit der SelectedItem Property kannst ermitteln welcher Node grad aktiviert/selektiert wurde beim klicken (siehe unten das Beispiel aus der MSDN-Lib)

SelectedItem Property (ActiveX Controls)

Returns a reference to a selected ListItem, Node, or Tab object.

Syntax
object.SelectedItem

The object placeholder represents an object expression that evaluates to an object in the Applies To list.


Remarks

The SelectedItem property returns a reference to an object that can be used to set properties and invoke methods on the selected object. This property is typically used to return a reference to a ListItem, Node, or Tab or object that the user has clicked or selected. With this reference, you can validate an object before allowing any further action, as demonstrated in the following code:

Command1_Click()
' If the selected object is not the root, then remove the Node.
If TreeView1.SelectedItem.Index &lt;&gt; 1 Then
Treeview1.Nodes.Remove TreeView1.SelectedItem.Index
End If
End Sub

To programmatically select a ListItem object, use the Set statement with the SelectedItem property, as follows:

Set ListView1.SelectedItem = ListView1.ListItems(1)

Jaguar ist offline   Mit Zitat antworten
Alt 18.01.2001, 11:43   #5
Jaguar
Classic Car Driver
 
Benutzerbild von Jaguar
 
Registriert seit: 16.02.2000
Ort: Wien
Beiträge: 569

Mein Computer

Beitrag

Sollt vielleicht noch erwähnen, daß diese Aktionen naturlich auch mit der Click/DBClick oder einer anderen Methode vom TreeView-Control anwendbar sind (nicht nur auf Command-buttons so wie in dem Beispiel).. des wolltest ja eigentlich wissen...
Jaguar ist offline   Mit Zitat antworten
Alt 18.01.2001, 13:11   #6
Andy020
Master
 
Registriert seit: 22.03.2000
Beiträge: 506


Beitrag

Erstmal danke für die Antwort!

Ich muss gestehen, dass ich eher ein VBA Anfänger bin.

Was ist eigentlich eine solche Command Funktion? Meiner Meinung nach eine Funktion, die nach einem Ereignis ausgeführt wird oder?

Aber wie "teile" ich der Funktion mit, dass es Aktionen bei Klicks auf Elemente meines TreeView Objektes ausführen soll.

So wie ich das bis jetzt verstanden habe anhand des Index des Elementes.

Mein Testcode sieht mal folgendermassen aus ...

Private Sub Form_Load()
Dim nodX As Node

Set nodX = Me!xTree.Nodes.Add(, , "P1", "Parent1")
nodX.Expanded = False
Set nodX = Me!xTree.Nodes.Add(, , "P2", "Parent2")
nodX.Expanded = False

Set nodX = Me!xTree.Nodes.Add("P1", tvwChild, "C1", "Child 1")
Set nodX = Me!xTree.Nodes.Add("P1", tvwChild, "C2", "Child 2")
Set nodX = Me!xTree.Nodes.Add("P1", tvwChild, "C3", "Child 3")
Set nodX = Me!xTree.Nodes.Add("P2", tvwChild, "C4", "Child 4")
Set nodX = Me!xTree.Nodes.Add("P2", tvwChild, "C5", "Child 5")
Set nodX = Me!xTree.Nodes.Add("P2", tvwChild, "C6", "Child 6")
Set nodX = Me!xTree.Nodes.Add("C1", tvwChild, "D1", "Versuch")

nodX.EnsureVisible

End Sub

Damit wird das TreeView Element mal mit Werten gefüttert und angezeigt, funktioniert schon mal recht gut. Später werde ich das TreeView Element höchstwahrscheinlich mit einem Recordset füllen, aber das ist jetzt mal nebensächlich.

Sicher eine (sau)blöde Frage, aber Wie weiss eigentlich die Command Funktion dass sie ausgeführt werden muss, wenn ich auf ein Element des TreeView Objektes klicke? Oder ist das eine Funktion die bei jedem Klick im Formular ausgeführt wird?

Fehlt bei der Funtion On_Load noch etwas? Muss ich dort vielleicht eine Funktion aufrufen, die ständig überwacht was geklickt wird oder ähnliches?

Wenn ich mich jetzt z.B. auf das Click Ereignis beziehe und eine Funktion "Private Sub xTree_Click(index As Integer)" schreibe, bekomme ich eine Fehlermeldung.

=======================================
"Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck bei Laden eingegeben. Dieser Ausdruck hat einen Fehler verursacht: Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder einer Prozedur mit demselben Namen.

* Der Ausdruck gibt möglicherweise weder den Namen eines Makros noch den Namen einer benutzerdefinierten Funktion, noch [Ereignisprozedur] zurück.
* Beim Auswerten einer Funktion, eines Ereignisses oder eines Makros trat möglicherweise ein Fehler auf
=======================================

Diese Meldung bekomme ich, logischerweise, bei jedem Click auf das Objekt.

Vielleicht liegt es daran, dass es für das TreeView Objekt, zumindest bei den Eigenschaften in der Entwurfsansicht, kein Klick-Event gibt.(?)

Die einzigen Eigenschaften die es bei dem Element gibt sind:
- Bei OLE Aktualisierung
- Beim Hingehen
- Beim Verlassen
- Bei Fokuserhalt
- Bei Fokusverlust

Mit denen kann ich aber nicht wirklich viel anfangen, weil ich mich auf ein Element IM Tree und nicht auf das ganze Objekt beziehen möchte.

Mir stehen 2 TreeView Objekte in unterschiedlichen Versionen zur Verfügung.

1. Microsoft TreeView Control, Version 5.0 (SP2)
2. Microsoft TreeView Control, Version 6.0

Ich schätze mal, dass ich da eine falsche Denkweise habe, aber das dürfte an meiner recht mangelhaften Erfahrung mit VB liegen.

Am einfachsten, zumindest für mich, wäre natürlich eine Lösung so nach dem Motto, je nach Indexnummer (Referenz) wird Aktion 1, oder Aktion 2 oder Aktion 3 ausgeführt.

Beispiel:

Syntax:
nodename, definition ob root parent oder child, funktion oder makro das bei klick ausgeführt wird ....

Aber das ist leider ziemlich sicher nur ein Wunschdenken von mir

Naja, wie auch immer, wenn mir wer in einem konkreten Beispiel kurz erläutern könnte wie ich eine Aktion (bei einem Klick auf eine Node im TreeView-Objekt) starten könnte, und es auch noch schafft, dass ich es verstehe , bekommt den Orden "Unverhoffter Accessretter eines hoffnungslosen Falls" zugesprochen.

Möchte mich für meine mangelnden VBA Kenntnisse entschuldigen!

Andy

Happy Posting
Andy020 ist offline   Mit Zitat antworten
Alt 18.01.2001, 20:14   #7
Jaguar
Classic Car Driver
 
Benutzerbild von Jaguar
 
Registriert seit: 16.02.2000
Ort: Wien
Beiträge: 569

Mein Computer

Beitrag

Anscheinend hab ich mich etwas unsauber ausgedrückt *tut leid*

also: folgendes beispiel bedeutet

Command1_Click()
.....
End Sub

das es in deinem Formular ein Control mit dem Namen Command1 gibt (in diesem Fall wohl ein Button, der auf das Click Ereignis reagiert)


Jedes Control hat eine Reihe von Events auf das es reagieren kann (Click, DBClick, LostFocus, usw)
Auch das TreeView Control hat eine Menge von diesen Events.
Vergiss mal die dämliche Darstellung im Formularentwurfsmodus. Geh ins VB-Code Fenster. Da sind oben zwei ComboBoxen. Bei der linken kannst das Control auswählen und bei der rechten stehen alle Events auf die das Ding reagieren kann (auch das Click Event).. einfach nur auswählen aus der Liste und schon erschein das nötige Code-Fragment, wo du dann reinschreibst, was das Control dann bei diesem Event machen soll.

In deinem Beispiel kannst dann bei dem Click-Event das selektierte Item ausfindig machen (siehe mein vorheriges posting mit "SelectedItem")

Hoffe das war jetzt verständlicher.....
Jaguar ist offline   Mit Zitat antworten
Alt 18.01.2001, 20:23   #8
Andy020
Master
 
Registriert seit: 22.03.2000
Beiträge: 506


Beitrag

Hi Jaguar!

Mein Problem ist gelöst, genau so funzts.

Du hattest dich nicht unkorrekt ausgedrückt, sondern ich war zu blöd zu verstehen was du gmeint hast. Ist eigentlich eh ganz logisch, anscheinend hatte ich ein Blackout.

Auf jedenfall, der Orden geht auch an dich.

Nochmals danke!

Andy

Happy Posting
Andy020 ist offline   Mit Zitat antworten
Alt 18.01.2001, 20:40   #9
Jaguar
Classic Car Driver
 
Benutzerbild von Jaguar
 
Registriert seit: 16.02.2000
Ort: Wien
Beiträge: 569

Mein Computer

Beitrag

Freut mich das du es geschafft hast.
*danke für den orden *


Jaguar ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:54 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag