当前位置:   article > 正文

70 NXOpen Block UI 树列表控件(Tree)(一)_nxopen tree

nxopen tree

目录

一、树列表控件(Tree)概述

二、操作树列表的Tree类和Node类

三、树列表插入列(Column )

四、创建和插入Node节点,并对列表添加数据创建和插入Node节点,并对列表添加数据

五、树列表各种回调函数(Callback )

六、树列表添加右键菜单


一、树列表控件(Tree)概述

        Blokc UI树列表控件(Tree List)在二次开发中是一个重要的控件,一般被用来加载或记录一些列表类的信息。而树列表相对于其他的控件操作会比较复杂,主要是关于树列表的各种回调函数我们需要熟悉和了解,当学会数据的插入、读取、修改和删除,树列表控件的相关应用就算是掌握了。

二、操作树列表的Tree类和Node类

        在 NxOpen帮助文档BlockStyler命名空间下,有两个类Node和 Tree,这两个类主要是用来操作树列表控件的。

        Node类:主要是针对树列表“节点”的操作,比如可以通过Node得到指定节点下的某一列的数据,判断节点是否是选择状态等。NX Open C++ Reference Guide: NXOpen::BlockStyler::Node Class Reference

        Tree类:主要是针对各种回调方法和树整体框架的操作,比如通过Tree类可以设置树列表的高度,设置每一列的宽度,创建和删除节点(Node)等操作。NX Open C++ Reference Guide: NXOpen::BlockStyler::Tree Class Reference

三、树列表插入列(Column )

NX Open C++ Reference Guide: NXOpen::BlockStyler::Tree Class Reference

  1. //对树列表插入5列,并设置每一列的标题和宽度
  2. tree_control0->InsertColumn(0, "年级", 200);
  3. tree_control0->InsertColumn(1, "学号", 200);
  4. tree_control0->InsertColumn(2, "姓名", 150);
  5. tree_control0->InsertColumn(3, "性别", 100);
  6. tree_control0->InsertColumn(4, "成绩", 70);
  7. //设置指定列不可以排序
  8. tree_control0->SetColumnSortable(2,false);
  9. //设置指定列是否可见
  10. tree_control0->SetColumnVisible(3, false);
  11. //得到列的数量
  12. int num = tree_controlO->NumberOfColumns();

四、创建和插入Node节点,并对列表添加数据创建和插入Node节点,并对列表添加数据

  1. /*Node* node = tree_controlO->CreateNode("");//创建一个节点
  2. tree_controlO->InsertNode(node,NULL,NULL,tree_control0->NodelnsertOptionLast);
  3. node->Expand(Node::ExpandOptionToggle);//设置节点是否展开*/
  4. //创建节点
  5. Node *node01 = tree_control0->CreateNode("");
  6. //插入节点
  7. tree_control0->InsertNode(node01, NULL, NULL, tree_control0->NodeInsertOptionLast);
  8. Node *node02 = tree_control0->CreateNode("");
  9. tree_control0->InsertNode(node02, NULL, NULL, tree_control0->NodeInsertOptionLast);
  10. Node *node03 = tree_control0->CreateNode("");
  11. tree_control0->InsertNode(node03, NULL, NULL, tree_control0->NodeInsertOptionLast);
  12. Node *node04 = tree_control0->CreateNode("");
  13. tree_control0->InsertNode(node04, NULL, NULL, tree_control0->NodeInsertOptionLast);
  14. Node *node05 = tree_control0->CreateNode("");
  15. tree_control0->InsertNode(node05, NULL, NULL, tree_control0->NodeInsertOptionLast);
  16. Node *node06 = tree_control0->CreateNode("");
  17. tree_control0->InsertNode(node06, NULL, NULL, tree_control0->NodeInsertOptionLast);
  18. //设置列的文本
  19. node01->SetColumnDisplayText(0, "一年级");
  20. node02->SetColumnDisplayText(0, "二年级");
  21. node03->SetColumnDisplayText(0, "三年级");
  22. node04->SetColumnDisplayText(0, "四年级");
  23. node05->SetColumnDisplayText(0, "五年级");
  24. node06->SetColumnDisplayText(0, "六年级");
  25. Node *node11 = tree_control0->CreateNode("");
  26. tree_control0->InsertNode(node11, node01, NULL, tree_control0->NodeInsertOptionLast);
  27. Node *node12 = tree_control0->CreateNode("");
  28. tree_control0->InsertNode(node12, node02, NULL, tree_control0->NodeInsertOptionLast);
  29. Node *node13 = tree_control0->CreateNode("");
  30. tree_control0->InsertNode(node13, node03, NULL, tree_control0->NodeInsertOptionLast);
  31. Node *node14 = tree_control0->CreateNode("");
  32. tree_control0->InsertNode(node14, node04, NULL, tree_control0->NodeInsertOptionLast);
  33. Node *node15 = tree_control0->CreateNode("");
  34. tree_control0->InsertNode(node15, node05, NULL, tree_control0->NodeInsertOptionLast);
  35. Node *node16 = tree_control0->CreateNode("");
  36. tree_control0->InsertNode(node16, node06, NULL, tree_control0->NodeInsertOptionLast);
  37. node11->SetColumnDisplayText(0, "一年级(1)班");
  38. node11->SetColumnDisplayText(1, "S322070091");
  39. node11->SetColumnDisplayText(2, "小明");
  40. node11->SetColumnDisplayText(3, "男");
  41. node11->SetColumnDisplayText(4, "100");
  42. node12->SetColumnDisplayText(0, "二年级(1)班");
  43. node12->SetColumnDisplayText(1, "S322070092");
  44. node12->SetColumnDisplayText(2, "小红");
  45. node12->SetColumnDisplayText(3, "男");
  46. node12->SetColumnDisplayText(4, "100");
  47. node13->SetColumnDisplayText(0, "三年级(1)班");
  48. node13->SetColumnDisplayText(1, "S322070093");
  49. node13->SetColumnDisplayText(2, "小亮");
  50. node13->SetColumnDisplayText(3, "男");
  51. node13->SetColumnDisplayText(4, "100");
  52. node14->SetColumnDisplayText(0, "四年级(1)班");
  53. node14->SetColumnDisplayText(1, "S322070094");
  54. node14->SetColumnDisplayText(2, "小峰");
  55. node14->SetColumnDisplayText(3, "男");
  56. node14->SetColumnDisplayText(4, "100");
  57. node15->SetColumnDisplayText(0, "五年级(1)班");
  58. node15->SetColumnDisplayText(1, "S322070095");
  59. node15->SetColumnDisplayText(2, "小熊");
  60. node15->SetColumnDisplayText(3, "女");
  61. node15->SetColumnDisplayText(4, "100");
  62. node16->SetColumnDisplayText(0, "六年级(1)班");
  63. node16->SetColumnDisplayText(1, "S322070096");
  64. node16->SetColumnDisplayText(2, "小虎");
  65. node16->SetColumnDisplayText(3, "男");
  66. node16->SetColumnDisplayText(4, "100");

五、树列表各种回调函数(Callback )

  1. OnSelectCallback//鼠标左键点击回调
  2. OnStateChangeCallback//状态更改回调
  3. ToolTipTextCallback//工具提示文本回调
  4. ColumnSortCallback//列排序回调
  5. StatelconNameCallback//图标名称回调
  6. OnBeginLabelEditCallback//编辑回调
  7. OnEndLabelEditCallback//结束编辑回调
  8. OnEditOptionSelectedCallback//选择回调
  9. AskEditControlCallback//编辑控件回调
  10. OnMenuCallback//右键菜单的回调
  11. OnMenuSelectionCallback//菜单选择回调
  12. lsDragAllowedCallback//是否允许拖动回调
  13. OnDropMenuCallback//在下拉菜单回调
  1. //第一个参数树列表ID,第二个参数节点ID,第三个参数选中列的ID,第四个参数,当前是选中状态还是取消状态
  2. void NXOpen_create_treelist::OnSelectCallback(NXOpen::BlockStyler::Tree *tree, NXOpen::BlockStyler::Node *node, int columnID, bool selected)
  3. {
  4. if (tree == tree_control0)//判断树列表
  5. {
  6. if (selected)
  7. {
  8. //获得选中列对应行的数据
  9. NXString strValue = node->GetColumnDisplayText(columnID);
  10. uc1601((char*)strValue.GetLocaleText(), 1);
  11. }
  12. }
  13. }

六、树列表添加右键菜单

  1. enum MenuID
  2. {
  3. DeleteNote, helpbutton
  4. };
  5. //右键弹出回调
  6. void NXOpen_create_treelist::OnMenuCallback(NXOpen::BlockStyler::Tree *tree, NXOpen::BlockStyler::Node *node, int columnID )
  7. {
  8. BlockStyler::TreeListMenu *menu = tree->CreateMenu();//创建菜单
  9. if (node != NULL)
  10. {
  11. menu->AddMenuItem(MenuID(DeleteNote), "删除");
  12. menu->AddMenuItem(MenuID(helpbutton), "帮助");
  13. }
  14. tree->SetMenu(menu); //设置菜单
  15. delete menu;
  16. }
  17. //右键响应选中的命令
  18. void NXOpen_create_treelist::OnMenuSelectionCallback(NXOpen::BlockStyler::Tree *tree, NXOpen::BlockStyler::Node *node, int menuItemID)
  19. {
  20. if ((MenuID)menuItemID == DeleteNote)
  21. {
  22. tree->DeleteNode(node); // 执行删除操作
  23. }
  24. else if ((MenuID)menuItemID == helpbutton)
  25. {
  26. uc1601("帮助", 1);
  27. }
  28. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/904071
推荐阅读
相关标签
  

闽ICP备14008679号