明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4063|回复: 17

list_box或edit_box中如何实现双击反应?

  [复制链接]
发表于 2009-5-28 14:33:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-5-30 14:45:25 编辑

想在对话框中对list_box或edit_box双击左键激活以下这段代码,从而获取扩展数据中的值.就象图示那样.要怎么实现啊?

(setq xdata (mapcar 'cdr (cdr (cadr (assoc -3 (entget (car (entsel)) (list "PipeSolid-*" "PipeWay-*" )))))))

测试图纸:

本帖子中包含更多资源

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

x
发表于 2009-6-1 21:35:00 | 显示全部楼层

在lsp文件中新加:

(defun test:act:list2 ()
  (cond ((= 4 $REASON)
  (GETVALOFDIA)
  (DONE_DIALOG 2009)
 )
  )
)

在setdialog函数中新加:

(or xdata (setq xdata ""))

  (start_list "list2")
  (add_list xdata)
  (end_list)

在C:getdata中

的(if (or (= RE 2) (= RE 3))...

前面加:(action_tile "list2" "(test:act:list2)")

后面加:如果(= 2009 re)则:
(if (setq pl (entsel "选一个PL:"))
       (setq xdata
       (mapcar
         'cdr
         (cdr
    (cadr
      (assoc
        -3
        (entget
          (car pl)
          (list "PipeSolid-*" "PipeWay-*")
        )
      )
    )
         )
       )
       )
     )
     (START_DIALOG)

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2009-5-30 00:29:00 | 显示全部楼层

收集来一些资料,看哪位朋友能根据这提示编个例程来...

如何捕获列表框(list_box)的双击操作?

在edit_box,list_box,image_button,slider中,有一个$reason变量,用来
表示你执行了什么操作 。在list_box中,双击的变量值是4。
可在你的代码中加入判断:
(action_tile "listbox" "(fun1).....")
(defun fun1()
   .....
 (if (= $reason 4)
  .....
 )
  .....
)

发表于 2009-5-30 10:43:00 | 显示全部楼层
list_box 可以双击执行指定动作,edit_box 不行哦
 楼主| 发表于 2009-5-30 10:54:00 | 显示全部楼层
caoyin班主,麻烦你编个例程帖出来供我参照一下啊,或是帮忙写写一楼那样的功能要如何实现啊,拜托咯
发表于 2009-5-30 17:02:00 | 显示全部楼层

1楼的双击编辑框通过DCL肯定是没办法了,你可以用列表框代替(就像你2楼所说)

或者改用其他编程。

DCL列表框的双击动作基本上是下面格式:

.....

(action_tile "list"  "(setq lin $value) (if (= $reason 4) (done_dialog 1)) " )

(setq FLAG (start_dialog))

;;FLAG返回1表示执行了双击

 楼主| 发表于 2009-5-30 21:03:00 | 显示全部楼层

努力了很久也无法搞定,请caoyin班主及各位大侠们帮助想想在LISP中要添加什么样的代码才能使对话框中的"管路名"对应的"list_box"实现:

双击->隐藏对话框并激活一楼代码->选取实体->获取扩展数据中的"AH111-01"->将"AH111-01"写入"list_box"中呢???

本帖子中包含更多资源

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

x
发表于 2009-5-31 12:48:00 | 显示全部楼层

你的代码缺少 LWPOLYLINE 子程序。

建议——把要解决的关键问题提出来,也就是说在哪个点卡住了,这样大家比较容易帮你解决。因为太长的代码人家不一定有耐心和时间去看。。。

 楼主| 发表于 2009-5-31 17:54:00 | 显示全部楼层

报告caoyin班主,我的代码中不需要缺少的LWPOLYLINE 子程序,也能正常使用,先前被我省略了.

我需要实现的目的是当用户进行如下操作时:

双击"LIST_BOX"->隐藏对话框并激活一楼代码->选取实体->获取扩展数据中的"AH111-01"->将"AH111-01"写入"list_box"中,

目前我只是完成DCL部分代码的添加,LSP部分需要添加什么代码我却一筹莫展(主要不懂编程,不知道如何将您5楼的代码整合到我的程序中去),肯请您帮忙添加一下.谢谢了

发表于 2009-5-31 20:14:00 | 显示全部楼层

做不到双击,可以变通一下的嘛~!

比如在edit_box的后面加个小按扭,

点击小按扭就获取扩展数....

(这也比较符合一般人的使用习惯)

 楼主| 发表于 2009-5-31 20:41:00 | 显示全部楼层

感谢fsxm大侠的热心回复,不过我觉得既然2楼代码与5楼caoyin班主的代码都显示双击驱动list_box是理论上成立的,

那我还是有必要坚持的,只是论坛及网络上的相关资料比较少,属偏门的技术.

拜托大家务必拿出你们的耐心看完在下的代码.

假如我的问题得已解决,那不仅在下得到了帮助而且也开辟了LISP编程一个新思路和方法啊!

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

本版积分规则

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

GMT+8, 2025-2-24 23:22 , Processed in 0.211758 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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