Discussion:
Treeview per VBA Click Ereignis auslösen
(zu alt für eine Antwort)
Rolf Furrer
2007-11-09 09:32:01 UTC
Permalink
Hallo

Ich verwende das Treeview Control. Dieses wird per VBA abgefüllt. Nun möchte
ich per VBA einen bestimmten Zweig öffnen, auch das kann ich noch. Aber dann
möchte ich, dass auf dem aktiven Eintrag ein Klick Ereignis ausgelöst wird.
Per Maus ja kein Problem, einfach draufklicken ;-)

Aber wie mache ich das per VBA?
Die Procedure hat den Kopf: Treeview2_NodeClick(ByVal mynode As Object)

Wie muss ich das denn von anderer Stelle aufrufen bzw. was als Parameter
übergeben?

Besten Dank für Hilfe

Rolf Furrer
André Minhorst
2007-11-09 09:41:14 UTC
Permalink
Hi Rolf,
Post by Rolf Furrer
Ich verwende das Treeview Control. Dieses wird per VBA abgefüllt. Nun möchte
ich per VBA einen bestimmten Zweig öffnen, auch das kann ich noch. Aber dann
möchte ich, dass auf dem aktiven Eintrag ein Klick Ereignis ausgelöst wird.
Per Maus ja kein Problem, einfach draufklicken ;-)
Aber wie mache ich das per VBA?
Die Procedure hat den Kopf: Treeview2_NodeClick(ByVal mynode As Object)
Wie muss ich das denn von anderer Stelle aufrufen bzw. was als Parameter
übergeben?
der Parameter wird von Steuerelement gefüllt und enthält einen Verweis
auf den angeklickten Knoten.

Was das Aufrufen dieser Routine von außen angeht: Was möchtest Du damit
erreichen beziehungsweise was soll bei diesem "simulierten" Klick passieren?

Ich spiele darauf an, dass es möglicherweise alternative Möglichkeiten gibt.

Viele Grüße
André
--
http://www.access-entwicklerbuch.de
http://www.access-im-unternehmen.de
Rolf Furrer
2007-11-09 11:26:29 UTC
Permalink
Post by André Minhorst
Hi Rolf,
Was das Aufrufen dieser Routine von außen angeht: Was möchtest Du damit
erreichen beziehungsweise was soll bei diesem "simulierten" Klick passieren?
Ich spiele darauf an, dass es möglicherweise alternative Möglichkeiten gibt.
Viele Grüße
André
Da muss ich jetzt weit ausholen:
Ich habe eine sehr umfangreiche Bildverwaltung programmiert, in der zu jedem
Bild auch beliebige viele Stichworte angehängt werden können. Diese
Stichworte lassen sich wie in einem Baum gliedern. In einem Form habe ich
nun "links" den Stichwort Baum und "rechts" werden nach Klick auf ein
Stichwort im Baum alle Bilder angezeigt, die dieses Stichwort haben.
Jetzt habeich rechts bei jedem Bild ein Contextmenü mit ua. dem Punkt
"Stichwort xy" aus diesem Bild entfernen". Bis jetzt klappt noch alles, das
Stichwort wird aus dem Bild entfernt.
Und nun kommts: jetzt passt dieses Bild ja nicht mehr zu den übrigen
Bildern, da dieses ja das aktelle Stichwort nicht mehr hat. Ich müsste also
sozusagen ein Refresh machen wie ein Klick auf das Stichwort im Baum, dann
wird der rechteTeil neu gezeichnet. Und das möchte ich durch simulieren
eines Klick auf den Baumeintrag erreichen.
Du hast recht, es gibt sicher auch noch andere Wege, aber gerade weil ich es
bis jetzt nicht geschafft habe, will ich es nun erst recht so machen ;-)

Gruss
Rolf
Michael Zimmermann
2007-11-09 09:46:54 UTC
Permalink
Hallo!
Post by Rolf Furrer
Ich verwende das Treeview Control. Dieses wird per VBA
abgefüllt. Nun möchte ich per VBA einen bestimmten Zweig
öffnen, auch das kann ich noch. Aber dann möchte ich,
dass auf dem aktiven Eintrag ein Klick Ereignis ausgelöst
wird. Per Maus ja kein Problem, einfach draufklicken ;-)
Aber wie mache ich das per VBA?
Die Procedure hat den Kopf: Treeview2_NodeClick(ByVal
mynode As Object)
Wie muss ich das denn von anderer Stelle aufrufen bzw.
was als Parameter übergeben?
Die Prozedur als solche kannst Du wie jede andere auch
mit ihrem Namen aufrufen: Treeview2_NodeClick Node, wobei
Node der Knoten ist, auf den Du virtuell geklickt wissen
möchtest.

Das Öffnen und Schließen eines Knotens geht mittels
Node.Expanded = True (False).

Den ausgewählten Knoten kannst Du mit Node.Selected
bestimmen.

Gruß aus Mainz
Michael
Rolf Furrer
2007-11-09 11:19:20 UTC
Permalink
Post by Michael Zimmermann
Hallo!
Den ausgewählten Knoten kannst Du mit Node.Selected
bestimmen.
Und genau das krieg ich irgendwie nicht hin, so dass ich anschliessend die
richtige Variable xxxx mit richtigem Typ und Inhalt habe, um
Treeview2_NodeClick(xxxx) aufzurufen.

Gruss
Rolf
Stefan Hoffmann
2007-11-09 11:26:56 UTC
Permalink
hallo Rolf,
Post by Rolf Furrer
Und genau das krieg ich irgendwie nicht hin, so dass ich anschliessend die
richtige Variable xxxx mit richtigem Typ und Inhalt habe, um
Treeview2_NodeClick(xxxx) aufzurufen.
Mit Early Binding:

Dim nd As MSComctlLib.Node

With nd
...
End With

Call Treeview2_NodeClick(nd)


mfG
--> stefan <--
--
Access-FAQ http://www.donkarl.com/
KnowHow.mdb http://www.freeaccess.de
Newbie-Info http://www.doerbandt.de/Access/Newbie.htm
Rolf Furrer
2007-11-09 14:16:12 UTC
Permalink
Post by Stefan Hoffmann
hallo Rolf,
Dim nd As MSComctlLib.Node
With nd
...
End With
Call Treeview2_NodeClick(nd)
Das war der entscheidende Hinweis, es funktioniert
besten Dank

Gruss
Rolf

Josef Poetzl
2007-11-09 11:39:06 UTC
Permalink
Hallo!
Post by Rolf Furrer
Post by Michael Zimmermann
Den ausgewählten Knoten kannst Du mit Node.Selected
bestimmen.
Und genau das krieg ich irgendwie nicht hin, so dass ich anschliessend die
richtige Variable xxxx mit richtigem Typ und Inhalt habe, um
Treeview2_NodeClick(xxxx) aufzurufen.
Nur damit kein Missverständnis auftritt:
Treeview2_NodeClick(xxxx) löst nicht den "NodeClick" aus, sondern
reagiert auf das Event NodeClick von Treeview2.


Ich würde es vermutlich so lösen:

public Sub MachEtwasMitTvNode(ByVal mynode As Object)
' hier der Code einfügen, den du aktuell
' im Eventhandler "Treeview2_NodeClick" verwendest
end sub

Public Sub NodeAuswaehlen
'Select Node ...
...
MachEtwasMitTvNode ...
...
end sub

private sub Treeview2_NodeClick(ByVal mynode As Object)
MachEtwasMitTvNode(ByVal mynode
end sub


mfg
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
Loading...