在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
首先建立树节点所用的记录类型 type HXL_TNode = record name:string; desc:string; BRoot:Boolean; 定义该类型指针 pHXL_TNode = ^ HXL_TNode; 然后在virtualstringtree所在的frame或者form的create函数中,初始化你的virtualtree 添加列:vrtlstrngtr1.Header.Columns.Add 设置第n列的名称vrtlstrngtr1.Header.Columns[n].Text := '名字'; 设置第n列的宽度:vrtlstrngtr1.Header.Columns[n].Width := 120; 设置折叠在第n列进行:vrtlstrngtr1.Header.MainColumn := n; 设置树节点所占的空间大小:vrtlstrngtr1.NodeDataSize := SizeOf(HXL_TNode); 假设你所定义的virtualstringtree为vrtlstrngtr1
p_node: pHXL_TNode; p_node1, p_node2: PVirtualNode;
建立父节点:
p_node1 := vrtlstrngtr1.AddChild(nil); p_node := vrtlstrngtr1.GetNodeData(p_node1); p_node^.name := ‘绿茶’; p_node^.desc := ‘不发酵的茶’; p_node^.BRoot := True; 注意:不是用p_node1.parent是不是为空来判断是不是父节点,p_node1的父节点不是空节点,而是vrtlstrngtr1.RootNode.如果你想自己控制,则可以自己定义BRoot成员,来判断是不是根节点。 添加子节点
p_node2 := vrtlstrngtr1.AddChild(p_node1); p_node := vrtlstrngtr1.GetNodeData(p_node2); p_node^.name := '西湖龙井'; p_node^.desc := ‘产地西湖的名茶’; p_node^.BRoot := False; 如果要显示,则需要在Events中点击OnGetText右面的空白出,自动生成vrtlstrngtr1GetText函数:
procedure 树所在的frame或者form的类.vrtlstrngtr1GetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); var p_node: pHXL_TNode; begin p_node := Sender.GetNodeData(Node); case Column of 0: CellText := p_node.name; 1: CellText := p_node.desc; end; end;
点击virtual string tree要做处理,则需要在events中点击OnClick右面的空白处,就会自动生成一个vrtlstrngtr1Click(Sender: TObject)函数 这里添加你要做的处理 获取所点击的节点 p_node := vrtlstrngtr1.FocusedNode;如果点击的地方不在节点出,则会返回空,做处理时,需要加以判断。 如果你想设置某节点p_node1以高亮形式显示给用户: 首先设置该节点被选中,vrtlstrngtr1.Selected[p_node1] := True;此时该节点的背景色是灰色,如果想设置其它颜色,则在属性中设置:properties->colors->UnfocusedSelectionColor中设置.如果你想起父节点也能在当前树的窗体中显示出来,则只需vrtlstrngtr1.FocusedNode := p_node1父节点; 将树完全折叠起来用vrtlstrngtr1.FullCollapse(nil); 将树在节点p_node处展开用vrtlstrngtr1.Expanded[p_node] := True; 树节点用的比较多的属性:ChildCount,NextSibling,PrevSibling,Parent,FirstChild,LastChild. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论