Toon posts:

VB 6.0 Treeview Event NodeCheck

Pagina: 1
Acties:

Verwijderd

Topicstarter
De situatie:

Ik wil in een treeview component een tree weergeven met checkboxes. Prima dat lukt. Nu wil ik dat er sommige nodes checked=true zijn en niet veranderd kunnen worden.

aanpak:

Ik van het event NodeCheck op en kijk naar de Tag van de node. Als het een bepaalde node is dan zet ik checked weer op true. Prima dat werkt ook, alleen als hij door gaat met de Sub wordt de node alsnog op checked=false gezet.

code:

Private Sub treeDelete_NodeCheck(ByVal Node As MSComctlLib.Node)
If Node.Tag = "tops" Then
treeDelete.Nodes("H").Checked = True
Node.Checked = True
End If
End Sub


Ik zet zowel de Node op true als de component.node op true. Heeft helaas niet het gewenste effect.

Verwijderd

En als je 'm voor de gein eens op False zet? Misschien wordt de value NA het event geswitched. Dus dan moet je 'm op False zetten, als je 'm eigenlijk op True wilt...

Misschien is dit onzin, maar VB heeft af en toe van die vreemde zaken... :)

Verwijderd

Topicstarter
Maakt helaas niks uit. Tijdens de Sub worden de properties wel veranderd maar als de Sub klaar is wordt de node.checked gewoon op het tegen over gestelde van ervoor gezet.

Weet iemand of er een ander component is waarbij ik dit probleem niet heb?

  • AceRimmer
  • Registratie: Maart 2001
  • Laatst online: 08:54

AceRimmer

What a guy...

Google Groups leverde de volgende tekst op, als antwoord op iemand met exact hetzelfde probleem:
Here is how I got around this problem:

The three events you need to use are

TreeView_Click()
TreeView_NodeClick(ByVal Node As Node)
TreeView_NodeCheck(ByVal Node As Node)

In the _NodeCheck event, the only code you need is Node.Selected = True

In the _Click event, First you test if the Selected item is a Node. If it
is, then you call the _NodeClick event and pass the selected item. The
_NodeClick event handles all of the code for displaying the necessary
information in the associated ListView (assuming this is what you are
doing). Then, when that processing is completed, control returns to the
_Click event where you can test if the node should be checked and, if not,
set Node.Checked = False.

Yes, it is a little kludgy. But, that is what worked for me.

Smoke me a kipper, I'll be back for breakfast