找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2125|回复: 3

[研讨] 文件管理模拟界面

[复制链接]

已领礼包: 1个

财富等级: 恭喜发财

发表于 2013-5-16 04:23:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

  1. (defun c:oui( / lastpx lastpy)

  2.   (setq icoHy 50   ;;预设图片的高度,单位: 像素
  3.         icoWx 70   ;;预设图片的宽度,单位: 像素
  4.         distanceWx 15  ;;填充图片的水平间距
  5.         distanceHy 25
  6.         starWx 5  ;;起始x偏移量
  7.         starHy 5
  8.         pictureWx 534  ;;Pictue 控件宽度 ;;(dcl_Control_GetWidth oui_Form1_PictureBox1);
  9.         pictureHy 380  
  10.         nMax (fix (/ pictureWx (+ icoWx distanceWx))) ;; 水平方向的最大填充数量
  11.         nMay (fix (/ pictureHy (+ icoHy distanceHy))))

  12. (dcl_Project_Load "oui.odcl")
  13. (dcl_Form_Show oui_Form1)
  14. (dcl_Project_Unload "oui")
  15. (princ)
  16. )

  17. ;;初始化
  18. (defun c:oui_Form1_OnInitialize (/)
  19.   (if filename-list (progn
  20.       (dcl_Control_SetText oui_Form1_TextBox2 filename-path)
  21.       (display_picture filename-list)
  22.   ))
  23. )
  24. ;;关闭
  25. (defun c:oui_Form1_TextButton1_OnClicked (/)(dcl_Form_Close oui_Form1))

  26. ;;移动鼠标
  27. (defun c:oui_Form1_PictureBox1_OnMouseMove (Flags X Y /)
  28.   (setq n (length filename-list)
  29.         m (car (Crect_tang n x y)))
  30.   (if (and select-ed (/= m select-curl))(progn
  31.     (setq select-curl m)
  32.     (display_picture filename-list)
  33.     (display_movepic x y 100 -2 -2)
  34.     ))
  35. )

  36. ;;滚动鼠标
  37. (defun c:oui_Form1_PictureBox1_OnMouseWheel (Flags ZDelta X Y /)
  38.   (if (> ZDelta 0)(princ "向上↑滚动 ")(princ "向下↓滚动 "))
  39. (princ)
  40. )

  41. ;;打开文件
  42. (defun c:oui_Form1_TextButton2_OnClicked (/)
  43. (if (nth xxxccc filename-list)
  44.   (dcl_MessageBox (strcat "当前选择文件: " (nth xxxccc filename-list)) "提示" 2 2)
  45.   (dcl_MessageBox "当前未选择文件" "提示" 2 2)
  46. )
  47. )

  48. ;;按下鼠标
  49. (defun c:oui_Form1_PictureBox1_OnMouseDown (Button Flags X Y /)
  50.   (setq xxxx x yyyy y)
  51. )
  52. (defun c:oui_Form1_PictureBox1_OnClicked (/)
  53. (setq xxxccc (display_movepic  xxxx yyyy 101 0 0)
  54.        select-ed (not select-ed))
  55. )



  56. ;;单击浏览文件夹
  57. (defun c:oui_Form1_TextButton3_OnClicked (/ ss fLt1 fLt2)
  58. (setq ss (dcl_SelectFolder "选择文件夹"))
  59. (if ss (progn (dcl_Control_SetText oui_Form1_TextBox2 ss)
  60.    (setq fLt1(vl-directory-files ss "*.dwg")
  61.          fLt2(vl-directory-files ss "*.txt")
  62.          filename-list (append fLt1 fLt2)
  63.          filename-path ss)
  64.    (dcl_PictureBox_Clear oui_Form1_PictureBox1)
  65.    (display_picture filename-list)
  66. ))
  67. )

  68. ;;功能: 显示或位移一个新的图片
  69. ;;参数: x y 图片的坐标  i 图片编号  dx dy 图片位移量
  70. ;;返回: 鼠标所在图片的序号,没有选择则为 nil
  71. (defun display_movepic(x y i dx dy / FL TL Lt Lxy n)
  72.   (setq n (length filename-list))
  73.   (display_picture filename-list)
  74.   (setq Lt (Crect_tang n x y))
  75.   (if (car Lt)(progn
  76.       (setq Lxy (nth (car Lt) (cadr Lt))
  77.          FL (list (+ dx (car(car Lxy)))(+ dy (cadr(car Lxy))) i)
  78.          TL (list (car(car Lxy)) (+ (cadr (car Lxy)) icoHy 1) -3 20 (nth (car Lt) filename-list) 0))
  79.       (dcl_PictureBox_PaintPicture oui_Form1_PictureBox1 (list FL))
  80.       (dcl_PictureBox_DrawText oui_Form1_PictureBox1 (list TL))
  81.   )) (car Lt)
  82. )

  83. ;;功能: 传入文件列表,显示图片及文件名
  84. ;;参数: <Lt> 文件名称列表
  85. ;;无返回值
  86. (defun display_picture(Lt / m n xy)
  87.    (setq Ln (length Lt) n 0
  88.          fLLxy '() tLLxy '())
  89.    (setq feLt (cadr (Crect_tang Ln nil nil)))
  90.    (if (> Ln (* nMay nMax))(setq Ln (* nMay nMax))) ;;满屏显示
  91.    (repeat Ln
  92.      (setq tem (nth n feLt)
  93.             fLLxy (cons (append (car tem) '(100)) fLLxy)
  94.             tLLxy (cons (list (car(car tem)) (+ (cadr (car tem)) icoHy 1) -19 20 (nth n Lt) 0 nil) tLLxy)
  95.             n (1+ n))
  96.    )
  97.    (dcl_PictureBox_PaintPicture oui_Form1_PictureBox1 fLLxy)
  98.    (dcl_PictureBox_DrawText oui_Form1_PictureBox1 (reverse tLLxy))
  99. )

  100. ;;功能: 创建 cn 个矩形,并判断 x,y 是否在矩形阵列内,
  101. ;;返回: 如果 x,y 矩形中,返回 (m Tg),Tg 为矩形阵列 m 为序列号
  102. ;;      x,y 不在矩形内或 x,y 为 nil 时返回 (nil Tg)
  103. (defun Crect_tang(cn x y / m n nm)
  104. (setq n 0 RTang '())
  105. (repeat nMay
  106.     (setq nm (- cn (* n nMax))) ;;剩余填充数
  107.     (if (>= nm nMax) (setq nm nMax))
  108.     (setq m 0)
  109.     (repeat nM
  110.        (setq p1 (list (+ starWx (* m (+ icoWx distanceWx)))
  111.                       (+ starHy (* n (+ icoHy distanceHy))))
  112.              p2 (list (+ (car p1) icoWx) (+ (cadr p1) icoHy))
  113.           RTang (cons (list p1 p2) RTang)
  114.               m (1+ m))
  115.     ) (setq n (1+ n))
  116. )(setq RTang (reverse RTang));;矩形表生成
  117. (setq n 0 nn nil)
  118. (if (and x y)
  119. (repeat (length RTang)
  120.     (setq pt12 (nth n RTang)
  121.            p1 (car pt12)
  122.            p2 (cadr pt12)
  123.            n (1+ n))
  124.     (if (and (> x (car p1))(< x (car p2))(> y (cadr p1))(< y (cadr p2)))
  125.        (setq nn (- n 1)))
  126. )) (list nn RTang)
  127. )
  128. (princ)
999.jpg
odcl控件感觉还是不足,像这个文件管理界面,勉强做出来,但效果实在不咋地
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:oui.odcl 
下载次数:17  文件大小:3.09 KB 
下载权限: 不限 以上  [免费赚D豆]


评分

参与人数 1D豆 +6 贡献 +1 收起 理由
XDSoft + 6 + 1 出题引导交流奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-5-16 08:14:09 来自手机 | 显示全部楼层
术有专攻,这些不是cad要做的,用其它软件更好,e.g acdsee ..
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-16 08:40:28 | 显示全部楼层
确实,OPENDCL本身也是有局限的,但是在ACAD下面提供的一种对话框设计的选择,还是挺丰富的,较原来的DCL比。当然我们也希望ODCL开发团队能提供更多,更方便的控件来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-5-18 09:11:32 | 显示全部楼层
这也可以,前来学习,:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-27 12:09 , Processed in 0.478612 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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