• Delphi Virtual String Tree 基本用法


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

    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.

  • 相关阅读:
    JS文本框下拉提示效果
    JS动态添加删除表格行
    JS验证 数字 电话号码 传真 邮箱 手机号码 邮编 日期
    TreeView 中CheckBox级联选中问题
    HashTable Dictionary
    JS操作Frame对象
    Winfrom 中怎样在回车时设置焦点
    Word 操作(未完待续)
    HTML5特性——prefetching预加载功能
    10个实用的 jQuery Mobile 插件推荐
  • 原文地址:https://www.cnblogs.com/rogge7/p/4609213.html
Copyright © 2020-2023  润新知