to shuihan20e 我的treeview1就两层,我只想当点一个父结点的时候就获取所点父结点下的所有子结点的StateIndex,能不能给个完整的例子呢?我现在就是不懂该如何用循环来获取当前父结点下的所有子结点的StateIndex!
用GetNext访问下一个,知道和所选节点同级,表示子节点循环完毕
var Node ,SubNode : TTreeNode ; i : integer;Node := TreeView.selected ; if Node.hasChildren then begin for i := 0 to Node.item.count -1 do begin // 遍曆下所有的 end; end;//手工寫的,可能有筆誤
to starluck 此行报错,麻烦帮看看,谢谢! Node.item.count -1
没有item.Count属性,自己就从当前节点遍历就行了
var tnTemp: TTreeNode; begin tnTemp := tvObject.Selected.getFirstChild; while (tnTemp <> nil) do begin tnTemp.StateIndex; tnTemp := tvObject.Selected.GetNextChild(tnTemp); //获取下一个子节点 end; end;
Node := TreeView.selected ; if Node.hasChildren then begin for i := 0 to Node.count -1 do begin Node.item[i].stateindex就是。。 end; end;
转自万一: with StringGrid1 do begin {清除第二列的数据} StringGrid1.Cols[1].Clear; {当前选择} Cells[1,0] := Node.Text; {序号; AbsoluteIndex 是绝对序号} Cells[1,1] := IntToStr(Node.AbsoluteIndex); {所在级别} Cells[1,2] := IntToStr(Node.Level); {在兄弟中排行} Cells[1,3] := IntToStr(Node.Index); {下级总数} Cells[1,4] := IntToStr(Node.Count); {上级元素} if Boolean(Node.Parent) then Cells[1,5] := Node.Parent.Text; {上一个} if Boolean(Node.GetPrev) then Cells[1,6] := Node.GetPrev.Text; {下一个} if Boolean(Node.GetNext) then Cells[1,7] := Node.GetNext.Text; {上一个兄弟} if Boolean(Node.getPrevSibling) then Cells[1,8] := Node.getPrevSibling.Text; {下一个兄弟} if Boolean(Node.getNextSibling) then Cells[1,9] := Node.getNextSibling.Text; {上一个可见} if Boolean(Node.GetPrevVisible) then Cells[1,10] := Node.GetPrevVisible.Text; {下一个可见} if Boolean(Node.GetNextVisible) then Cells[1,11] := Node.GetNextVisible.Text; {第一个下级} if Node.HasChildren then Cells[1,12] := Node.getFirstChild.Text; {最后一个下级} if Node.HasChildren then Cells[1,13] := Node.GetLastChild.Text; {总数} Cells[1,14] := IntToStr(Node.Owner.Count); end;
我的treeview1就两层,我只想当点一个父结点的时候就获取所点父结点下的所有子结点的StateIndex,能不能给个完整的例子呢?我现在就是不懂该如何用循环来获取当前父结点下的所有子结点的StateIndex!
用GetNext访问下一个,知道和所选节点同级,表示子节点循环完毕
Node ,SubNode : TTreeNode ;
i : integer;Node := TreeView.selected ; if Node.hasChildren then begin
for i := 0 to Node.item.count -1 do begin // 遍曆下所有的
end;
end;//手工寫的,可能有筆誤
此行报错,麻烦帮看看,谢谢!
Node.item.count -1
var
tnTemp: TTreeNode;
begin
tnTemp := tvObject.Selected.getFirstChild;
while (tnTemp <> nil) do
begin
tnTemp.StateIndex;
tnTemp := tvObject.Selected.GetNextChild(tnTemp); //获取下一个子节点
end;
end;
for i := 0 to Node.count -1 do begin
Node.item[i].stateindex就是。。
end;
end;
with StringGrid1 do begin {清除第二列的数据}
StringGrid1.Cols[1].Clear; {当前选择}
Cells[1,0] := Node.Text; {序号; AbsoluteIndex 是绝对序号}
Cells[1,1] := IntToStr(Node.AbsoluteIndex); {所在级别}
Cells[1,2] := IntToStr(Node.Level); {在兄弟中排行}
Cells[1,3] := IntToStr(Node.Index); {下级总数}
Cells[1,4] := IntToStr(Node.Count); {上级元素}
if Boolean(Node.Parent) then Cells[1,5] := Node.Parent.Text; {上一个}
if Boolean(Node.GetPrev) then Cells[1,6] := Node.GetPrev.Text; {下一个}
if Boolean(Node.GetNext) then Cells[1,7] := Node.GetNext.Text; {上一个兄弟}
if Boolean(Node.getPrevSibling) then Cells[1,8] := Node.getPrevSibling.Text; {下一个兄弟}
if Boolean(Node.getNextSibling) then Cells[1,9] := Node.getNextSibling.Text; {上一个可见}
if Boolean(Node.GetPrevVisible) then Cells[1,10] := Node.GetPrevVisible.Text; {下一个可见}
if Boolean(Node.GetNextVisible) then Cells[1,11] := Node.GetNextVisible.Text; {第一个下级}
if Node.HasChildren then Cells[1,12] := Node.getFirstChild.Text; {最后一个下级}
if Node.HasChildren then Cells[1,13] := Node.GetLastChild.Text; {总数}
Cells[1,14] := IntToStr(Node.Owner.Count);
end;