• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

DelphiVirtualStringTree基本用法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

首先建立树节点所用的记录类型

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.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi进度条发布时间:2022-07-18
下一篇:
delphi.memory.分配及释放---New/Dispose,GetMem/FreeMem及其它函数的区别与相同 ...发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap