[ Skill ] Form 高级用法 Tree Table

https://www.cnblogs.com/yeungchie/

code

1. 创建一个 tree 作为主 tree

mainTree = hiCreateTree('mainTree)

2. 创建两个 tree item

treeItem1 = hiCreateTreeItem('treeItem1 list("FEOL"))
treeItem2 = hiCreateTreeItem('treeItem2 list("BEOL"))
  • 将这两个 tree item 追加到主 tree (mainTree) 中

这一步是 mainTree \(\supset\) treeItem

hiTreeAppendItem(mainTree treeItem1)
hiTreeAppendItem(mainTree treeItem2)

3. 又创建两个 tree 作为子 tree

subTree1 = hiCreateTree('subTree1)
subTree2 = hiCreateTree('subTree2)
  • 分别将这两个子 tree 插入到对应的 tree item (treeItem1 treeItem2) 中

这一步是 treeItem \(\supset\) subTree

hiItemInsertTree(treeItem1 subTree1)
hiItemInsertTree(treeItem2 subTree2)

4. 双叒创建一些 tree item

这里处理 subTree \(\supset\) subTreeItem
tree 和 item 的关系理清之后,合并起来写更简洁

hiTreeAppendItem(subTree1
    ; 创建 tree item 的同时追加到对应的 tree 中
    hiCreateTreeItem('subTreeItem11 list( "Active" 3  0 nil ))
)
hiTreeAppendItem(subTree1
    hiCreateTreeItem('subTreeItem12 list( "POLY"   13 0 nil ))
)
hiTreeAppendItem(subTree2
    hiCreateTreeItem('subTreeItem21 list( "METAL1" 16 0 0.8 ))
)
hiTreeAppendItem(subTree2
    hiCreateTreeItem('subTreeItem22 list( "METAL2" 18 0 nil ))
)
hiTreeAppendItem(subTree2
    hiCreateTreeItem('subTreeItem23 list( "METAL3" 28 0 nil ))
)

5. 创建 tree table

treeField = hiCreateTreeTable(
    ?name           'treeField
    ?title          "Process information"
    ?titleAlignment 'center
    ?headers        list(
        ; list(  标题     宽度  对齐   数据类型  )
        list("Layer Name" 125 'left   'string  ) 
        list("GDS Number" 85  'center 'int     )
        list("Data Type"  85  'center 'int     )
        list("Thickness " 80  'right  'float3  )
    )
    ?choice     mainTree    ; 将主 tree 赋值给 ?choice
    ?callback   "treeCB"
)

6. 创建 form

form = hiCreateAppForm(
    ?name           'form
    ?formTitle      "Process"
    ?fields         list(
        list(treeField  0:0  380:200  25)
    )
    ?initialSize    500:250
)

7. 创建 callback 函数

procedure(treeCB(field itemSymList)
    foreach(sym itemSymList
        println(hiGetTreeItemDescription(eval(sym)))
    )
)

需要注意,如果 callback 以 lambda 形式定义的,则输入的参数有三个:fieldSym form itemSymList

8. 最后把这个 form 显示出来

hiDisplayForm(form)

show

相关函数

创建

  • hiCreateTreeTable 创建 table
  • hiCreateTree 创建 tree
  • hiCreateTreeItem 创建 item

编辑

  • hiItemInsertTree 向 item 插入一个 tree
  • hiItemRemoveTree 移除 item 下的 tree
  • hiTreeAppendItem 对 tree 向后追加 item
    • hiTreeAppendItems
  • hiTreePrependItem 对 tree 项后追加 item
    • hiTreePrependItems
  • hiTreeRemoveItem 移除 tree 下的 item
    • hiTreeRemoveItems
    • hiTreeRemoveAllItems

获取

  • hiTreeTableGetItems 获取 table 中的 items
  • hiTreeTableGetItemCount 获取 table 中的 items 的数量
  • hiTreeTableGetSelectedItems 获取 table 中选中的 items
  • hiTreeTableGetSelectedItemCount 获取当前 table 中选中的 items 数量
  • hiGetTree 获取 item 下的 tree
  • hiGetTreeItems 获取 tree 下的 items
  • hiGetTreeParent 获取 tree 的父 item
  • hiGetTreeItemParent 获取 item 的父 tree
  • hiGetTreeItemDescription 获取 item 的描述( row 的内容 )
    • hiSetTreeItemDescription 修改上述
  • hiGetTreeItemIcons 获取 item 的图标配置
    • hiSetTreeItemIcons 修改上述

控制

  • hiTreeTableSelectItem 选中 table 中的 item
    • hiTreeTableSelectItems
    • hiTreeTableSelectAllItems
  • hiTreeTableDeselectItem 取消选中 table 中的 item
    • hiTreeTableDeselectItems
    • hiTreeTableDeselectAllItems
  • hiExpandTreeItem 展开
  • hiCollapseTreeItem 折叠
posted @ 2021-03-01 23:32  YEUNGCHIE  阅读(2291)  评论(1编辑  收藏  举报