【发布时间】:2021-06-11 07:53:09
【问题描述】:
当用户检查一个父级时,这是一个检查所有子级的代码。但是如何检查所有父母检查一个孩子?顺便一提。我尝试使用Node->getPrevSibling();但没有效果。
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();
}
}
}
【问题讨论】:
标签: c++ c++builder