明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2063|回复: 1

[讨论] [讨论](讨论)将list_box控件加工成tree_list树形控件的方法

[复制链接]
发表于 2010-4-8 20:34:00 | 显示全部楼层 |阅读模式
 
;先将字符串列表生成树形结构,然后在LIST_BOX控件下显示列表并将LISP_box加工成TREE_list
;  飞诗的LIST_DCL工具就是现成例子
;本例中采用的是递归的方法,就是达不到效果
(setq zjlist
'("可缩性支架"
  ("梯形可缩性支架"
   ("梯形支架断面"
    )
   )
  ("圆形可缩性支架"
   ("四节圆形支架"
    "五节圆形支架"
    "六节圆形支架"
    ("四节圆形支架"
      "五节圆形支架"
      "六节圆形支架"
      )
    "五节圆形支架"
    "六节圆形支架"
    )
   )
  ("方、长环形支架"
   "方、长环形支架"
   ("方节支架"
    "长形支架"
    )
   )
  ("拱形、马蹄形支架"
   ("三节半圆拱形支架"
    "四节半圆拱形支架"   
    "五节半圆拱形支架"
    "三节直腿三心拱形支架"
    "四节直腿三心拱形支架"
    "五节直腿三心拱形支架"
    "四节曲腿三心拱形支架"
    "五节曲腿三心拱形支架"
    "六节马蹄形支架"
    "七节马蹄形支架"
    )
   )
  )
      )

(defun space_i( i str / space);产生指定数量空格
  (setq space "")
  (repeat i
    (setq space(strcat space str))
    )
  space
  )

(defun de_zfcgs(list1 / zfcgs tmp);统计本级字符子项个数
  (setq zfcgs 0)
  (foreach tmp list1
    (if(=( type tmp)'STR)
      (setq zfcgs (+ zfcgs 1))
      )
    )
  zfcgs
  )

(setq i 1 )
(defun bllb(list1);遍历列表
  (setq number 1 zfcgs (de_zfcgs list1));字符串个数
  ;
  (foreach tmp list1
    (if(=( type tmp)'STR)
      (PROGN;是字符串就生成相应结构字符
(setq str
       (strcat (space_i (- i 1)"  ")
       (if(= number zfcgs)
"└";同级别中最后一个字符串子项
"├";同组别中后面还有字符串子项
)
       (if(=(TYPE(nth number list1))'LIST)
"▽";字符串项下有子项用"▽"表示
"─";字符串项下没有子项用“—”表示
)
       tmp
       )
      str
   (strcat "\n" str)      
  ;(strcat "\n"(substr str 3));前一个字符不要,将列表整体靠左
  )
(setq number (+ number 1))
(princ str)
)
      (progn;是表就继续递归
(setq i (+ i 1))
(bllb tmp)
)
      )
    )
  (setq i 1 )
  (princ)
  )

(bllb zjlist)

代码完成后达不到下面的效果,请高手指点,完善。

;;;▽可缩性支架
;;;├─▽梯形可缩性支架
;;;│  └─梯形支架断面
;;;├─▽圆形可缩性支架
;;;│  ├─四节圆形支架
;;;│  ├─五节圆形支架
;;;│  └─六节圆形支架
;;;├─▽方、长环形支架
;;;│  ├─方节支架
;;;│  ├─长形支架
;;;│ ├─▽圆形可缩性支架
;;;│  │ ├─四节圆形支架
;;;│  │ ├─五节圆形支架
;;;│  │ └─六节圆形支架
;;;│  ├─方节支架
;;;│  └─长形支架
;;;└─▽拱形、马蹄形支架
;;;   ├─三节半圆拱形支架
;;;   ├─四节半圆拱形支架
;;;   ├─五节半圆拱形支架
;;;   ├─三节直腿三心拱形支架
;;;   ├─四节直腿三心拱形支架
;;;   ├─五节直腿三心拱形支架
;;;   ├─四节曲腿三心拱形支架
;;;   ├─五节曲腿三心拱形支架
;;;   ├─六节马蹄形支架
;;;   └─七节马蹄形支架
发表于 2010-4-11 16:57:00 | 显示全部楼层

其实主要就是表结构的定义和拆分

看楼主写这么多,只要建立一个主要的表就能解决问题

(

 ("分支标记"

   内容

   ("分支标记" 内容)

   ("分支标记"

       ("分支标记" 内容)

   )

 )

大致思路是这样,然后根据标记的值来记录嵌套的表层数,在最终上对话框的时候添加相应数量的空格,就能实现树状目录

)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-1 23:29 , Processed in 0.159727 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表