Reputation: 63
This is a code that checks all childes when user check one parent. But how to check all parent checking one childe? By the way. I tried to use Node->getPrevSibling();
but there is no effect.
void __fastcall TForm1::UpdateChildStates( TTreeNode *Node )
{
int state = TreeView_GetItemState(TreeView1->Handle, Node->ItemId, TVIS_STATEIMAGEMASK);
int StateIndex = ((state & TVIS_STATEIMAGEMASK)>>12);
Node = Node->getFirstChild();
while( Node )
{
Node->StateIndex = StateIndex;
UpdateChildStates( Node );
Node = Node->getNextSibling();
}
}
//-------------------------------------------------------------------------
void __fastcall TForm1::TreeView1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
TTreeNode *Node;
THitTests HitTests = TreeView1->GetHitTestInfoAt(X, Y);
if( HitTests.Contains(htOnStateIcon) )
Node = TreeView1->GetNodeAt( X, Y );
else return;
if( Node )
{
TreeView1->Items->BeginUpdate();
try {
UpdateChildStates(Node);
}
__finally {
TreeView1->Items->EndUpdate();
}
}
}
Upvotes: 0
Views: 90