Hi Christian,
Ich habe die TreeViews mal in Unterformulare gepackt und siehe
da, es geht.
Ist aber nicht gerade die Ideallösung.
vielleicht ist es eine gute Idee diese Beitragsfolge in das Accessbrett verlegen zu lassen.
Der hiesige Mod (Rainer) könnte das tun oder veranlassen.
Die guten VB-Leute hier haben das sicher schon gelesen, können dir aber m.E. nicht helfen weil es wiederum m.E. ein reines Access-Problem ist.
Und, ich kann es nicht nachvollziehen.
Access97 auf WinXP, 1 Form mit einem Register, das Register hat Seite1 und Seite2,
jede Seite hat ein Treeview6.0 Objekt).
Die mdb ist hier runterladbar: http://www.hostarea.de/server-03/Maerz-0f34a8f460.zip
Hinweis, es ist KEINE zip, ändere die Endung auf mdb.
Änderung war wg. hostarea, die mögen keine mdbs.
und hat letztlich nur diesen Code:
Private Sub Form_Load()
ActiveXStr3.Nodes.Add Key:=„Test1“, Text:=„Test1“
ActiveXStr3.Nodes.Add Key:=„Test2“, Text:=„Test2“
ActiveXStr4.Nodes.Add Key:=„Test3“, Text:=„Test3“
ActiveXStr4.Nodes.Add Key:=„Test4“, Text:=„Test4“
Me.Requery
End Sub
Einziger Fehler ist, beim Öffnen der Form ist Seite1 aktiv, wechelt man zu Seite2, zeigt
diese ihr Treeview mit falschem Inhalt an (nur Test4).
Dies geschieht aber nur einmalig nach dem Öffnen, danach kann man beiliebig von Seite zu Seite
wechseln und die Anzeige stimmt jeweils.
Die Codeversuche im Anhang um diesen Fehler zu beheben brachten alle nix.
Warum es z.B. als ActiveXStr3 und nicht als TreeView1 benannt ist weiß ich nicht.
In Excel97 komme ich besser klar als mit Access, dort brachte eine Userform mit gleichem Aufbau
wie die Form in Access und mit diesem Code:
Private Sub UserForm_Initialize()
TreeView1.Nodes.Add Key:=„Test1“, Text:=„Test1“
TreeView1.Nodes.Add Key:=„Test2“, Text:=„Test2“
TreeView2.Nodes.Add Key:=„Test3“, Text:=„Test3“
TreeView2.Nodes.Add Key:=„Test4“, Text:=„Test4“
'me.Requery 'gibts in Excel nicht
End Sub
nur die Erkenntnis, das dort keinerlei Fehler auftreten.
Nö, der Code wird nicht mehrmals aufgerufen.
Kannst du mal eine Beispiele-mdb bastelen und irgendow hochladen, zB Hostarea, mußt sie vorher umbenennen, in xls,zip, sonstwas
Gruß
Reinhard
Private Sub RegisterStr0_Change()
'MsgBox „regchance“
Form.Requery
End Sub
’
Private Sub RegisterStr0_Click()
MsgBox „regclick“
End Sub
’
Private Sub Seite1_Click()
MsgBox „Seite1click“
Form.Requery
Seite1.Requery
End Sub
’
Private Sub Seite1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MsgBox „Seite1click“
Form.Requery
Seite1.Requery
End Sub
’
Private Sub Seite2_Click()
Form.Requery
MsgBox „Seite2click“
Seite2.Requery
End Sub
Ich dachte immer, da m.W. Office97 sich sein Vba aus Vb5.0
holte und ab Office2000 das Vba von VB6.0 entlehnt wurde, daß
es für mich sicherer ist, wenn ich Office97 benutze das
Control 5.0 zu benutzen, bei höheren Officeversionen dann das
Control 6.0.
Bin ich gar nicht drauf gekommen.
Ich habe es jetzt mit 5.0 ausprobiert. Mein Problem beim
Registerwechel besteht dann nicht mehr, allerdings bekomme ich
allerlei Fehlermeldungen bei z.B. MouseOver, obwohl die
einzige Funktion in meinem Formular das Form_Open ist und sich
beim TreeView keine MouseOver Methode registrieren lässt.
Ausserdem gibt es die Methoden TreeView_NodeClick und viele
weitere nicht mehr.
Aber zu deiner Anfrage, ich weiß schon wodran das liegt
*glaub*, auch wenn ich es vielleicht nicht in verständliche
Worte fassen kann.
Auch wenn es in deinen Codes nicht ersichtlich oder gar
geplant ist, deine geposteten Codezeilen werden mehrmals
aufgerufen.
Deshalb setze mal auf die erste Codezeile einen Haltepunkt,
und gehe dann von da mit F8 weiter, du wirst dich dann wundern
daß andere Ereignisse wie Change oder Activate des Registers
o.ä. und da der letzte Befehl, also das „End Sub“ deine
Codezeilen aufrufen.
Nö, der Code wird nicht mehrmals aufgerufen.
Gruß
Christian