zoukankan      html  css  js  c++  java
  • Delphi之TreeView

    TreeView是Delphi中使用频率比较高的一个控件,虽然使用次数很多,但总结不够。借着这次做GDW原型的机会总结一下,写的过程中也会参考网上的博文。

    TTreeView、TTreeNodes和TTreeNode

      TTreeView由节点构成,建树通过对TreeView.items属性进行操作。Items是一个TTreeNodes对象,这是一个TTreeNode集。

    常用的属性

    1. Count,结点个数;
    2. Item[index],通过index得到结点;
    3. TTreeNode.Data,指向一个指针,可以存对象,存指针,也可以存整数;
    4. TTreeNode.Text,树结点的文本;
    5. TTreeNode.ImageIndex,TTreeNode.SelectedIndex,分别是树结点图标序号,树结点选中时图标序号,用于设置树结点的图标;
    6. TTreeNode.Expanded属性表明是否所有的子项都全部展开;
    7. TTreeNode.HasChildren属性表明一个项是否有子项;
    8. TTreeNode.Focused属性确定焦点是否落在此节点上,被Focus时会一个标准的方框围住,只能有一个节点会被聚焦。 
    9. TTreeNode.Selected属性表明一个节点是否被选中,同样只有一个节点会被选中。

    常用的方法

    1. GetFirstNode 得到根结点;
    2. TTreeNode.GetNext 得到本节点的下一个结点,配合GetFirstNode可以遍历整个树;
    3. AddFirst 添加第一个根节点,此函数添加的节点总排在前面,除非后来又使用此函数添加了一个节点,则后添加的节点将排在前面。返回新添加的节点。
    4. 然后以此为基础,添加此项的子节点。
    5. 删除节点:Treeview.Selected.Delete
    6. 编辑节点内容:Treeview.Selected.EditText
    7. 为了提升效率,避免界面大幅闪动,最好使用TreeView.Items.BeginUpdate 和 TreeView.Items.EndUpdate 方法;

    设置树结点图标

    1. ImageIndex:在常态时选用的图的序号;
    2. SelectedIndex:当节点被选中时在TimageList 中选什么样的图象;

    一段代码 

    Items.BeginUpdate;
      Items.Clear;
      // 建立第一层节点
      AddElemntType2Tree(AElementTypeID, AAddNoChildNode);
      // 建立第二层节点
      if Items.GetFirstNode <> nil then
      begin   
        oNode := Items[0]; // 选择第一个构件类型结点
        while oNode <> nil do
        begin
          UpdateTreeNode(oNode, ASelectedElementID);
          oNode := oNode.getNextSibling;
        end;
      end;
      // 展开
      if Selected <> nil then
        Selected.Expanded := True
      else if Items.Count > 0 then
      begin
        oNode := Items.GetFirstNode;
        Assert(oNode <> nil);
        // 选中第一个节点的第一个子节点(若存在则为第一个构件类型下的第一个构件)。
        Selected := oNode.getFirstChild();
        // 若没有选中构件,则选中第一个构件类型节点,否则展开节点。
        if Selected = nil then
          Selected := oNode
        else
          Selected.Expanded := True;
      end;
      Items.EndUpdate;

  • 相关阅读:
    使用工具自动生成Linq类文件
    DateTime.MinValue和MaxValue引发的异常
    C# AD 验证登陆
    HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法
    清理sqlserver 2012 日志文件
    如何修改博客园插入代码的默认代码大小?
    hdu 1241:Oil Deposits(DFS)
    【2014年寒假日常记录表(2014.1.9—2.23,45天)】
    hdu 1016 Prime Ring Problem(DFS)
    蓝桥杯 历届试题 错误票据(水题,排序)
  • 原文地址:https://www.cnblogs.com/blogofwu/p/5063317.html
Copyright © 2011-2022 走看看