找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: st788796

[教学] ODCL中使用Asynchronous事件

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-5 18:43:33 来自手机 | 显示全部楼层
13808843088 发表于 2014-12-5 18:30
实验了一下模态对话框,在设置了text limit 5,触发EditChanged事件,设置(> (strlen NewValue) 4)的时候 ...

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-6 07:58:05 | 显示全部楼层
13808843088 发表于 2014-12-5 18:30
实验了一下模态对话框,在设置了text limit 5,触发EditChanged事件,设置(> (strlen NewValue) 4)的时候 ...

上面说错了,模态对话框没有 引发事件 选择, 只能用 limits + maxtext 组合
另外,你想让初始焦点在哪个控件就在 initialize 中 setfocus
  1. (defun c:maxtext_Form1_TextBox1_OnMaxText (/)
  2.   (dcl_control_setfocus maxtext_Form1_TextBox2)
  3. )
  4. (defun c:maxtext_Form1_TextBox2_OnMaxText (/)
  5.   (dcl_control_setfocus maxtext_Form1_TextBox3)
  6. )
  7. (defun c:tt (/ strl)
  8.   (setq strl
  9.   '("YWt6AzAPAABHVcdKBuKTKkURbT9ugGK7jzy8VWz8TD5ubx5GpVpGamp2X3rmjuzePkzAQvZeMG48"
  10.     "nnBEXK+tviF+/7o93Pp4RDR0dDRadi4vjvbnJyEQkUC3z1wlKgnZxaURGZil4+fDESMDz/Cetyov"
  11.     "P3NJThehV36RTb5Uh9QHrrlGOJqwX/F3Bra0BnSFm7cc4aYCRdQ2Bm/dqJT3GTAYQueNLu7JBKWb"
  12.     "lLQm/6DAsmgaIB34G9ovtCbupngdMO7QKeqv+gaF/Pi72OBdHJU40eyU8PvG8DNOVwpfxrrqQPxH"
  13.     "IjkrnLMlilEnfGkNOGZc6ccT15KLJ4ayPYp6TtuV5sH6EWyQCY87m4U2iCX6IUQBxYANvFF2QV2C"
  14.     "5YYU+gUsD4K5m9U6mFBMH89KoRMz9YlklzZessXmWbLupadbZ6fIlqTDRA3upRywexmT7tIuFazi"
  15.     "UOZOr8OqVtEHnQAXXKOfCFPjZw2Ii/StKuZZuonqjiRUkh288XbR2DwRDoXPAs3PDIrrDmh9jDI1"
  16.     "JxiaYL4fByH4x2yMSrRAOcZkmOuE1wchW4VynynQcHWUIdpCx7PvfcMnjwO0Fem1tZwH1P0xhkKf"
  17.     "87oBtJ/dTEzFl74Zd6FdwLdmoETwffb1JWeQLum/uc7yT7LcGl3oEhhZq5Zzn3nK+a0Q8eGqAO+S"
  18.     "JZapp52Cy+YYr4uyqIpliw5f8hGOA1/AkZAyJoHRnzGgvv1qweOA8+1wcVfg3INh2WDiXiJcAvKO"
  19.     "Vqvx2xp548/2yjJdXFMDRK00JIxV72jF4jkGZxfPiEjau7hZrKwsJNIBZaxM8cbKAr6B6OgCudub"
  20.     "cGwXl9rKIj46JKiWMlUXV1qs7Da1cbrbm2Sk6OjIGr+Y5bY8ORs/0QEnZbM2"
  21.    )
  22.   )
  23.   (dcl_project_import strl)
  24.   (dcl_form_show maxtext_form1)
  25.   (princ)
  26. )

点评

纯中文或纯英文输入切换的问题解决了。由于程序的text limit限制的是字符数的输入,亦即设置text limit为5,无论你输入5个中文,还是5个英文,程序都认为是5个字符。如果我的字符串是为了在autocad中写text,那么5个  详情 回复 发表于 2014-12-6 09:46
辛苦您了,我试试  发表于 2014-12-6 08:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-12-6 09:46:15 | 显示全部楼层
st788796 发表于 2014-12-6 07:58
上面说错了,模态对话框没有 引发事件 选择, 只能用 limits + maxtext 组合
另外,你想让初始焦点在哪个 ...

纯中文或纯英文输入切换的问题解决了。由于程序的text limit限制的是字符数的输入,亦即设置text limit为5,无论你输入5个中文,还是5个英文,程序都认为是5个字符。如果我的字符串是为了在autocad中写text,那么5个中文text的宽度=10个英文text的宽度。


问题在于很可能中英文混输,假如设置text limit为5,autocad中预留的宽度为5个中文text宽度,我输入12345,提取出写入autocad,字符宽度只占了预留宽度的一半,我想输入67890补齐的时候,对话框就会跳行了。这个地方矛盾了,如何解决呢?谢谢

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

使用道具 举报

发表于 2014-12-6 10:27:34 | 显示全部楼层
想多了,与text limit无关,在EditChanged事件中将焦点移到text box2中还不够,还要将text box2激活为编辑状态,这里没找到相关函数,哪位知道,望告知,谢谢

点评

意思是把编辑框里面的文字亮显选中吗?  详情 回复 发表于 2014-12-6 11:03
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-6 10:51:26 来自手机 | 显示全部楼层
13808843088 发表于 2014-12-6 10:27
想多了,与text limit无关,在EditChanged事件中将焦点移到text box2中还不够,还要将text box2激活为编辑 ...

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

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

发表于 2014-12-6 11:01:22 | 显示全部楼层
st788796 发表于 2014-12-3 15:41
你写个简单的文字编辑的同步试试,DCL实际都是异步事件(action)

textbox1和textbox2有一个设置就都同步了,这是为什么呢。
另外还有一个疑问。就是我把名称改为cal1后里面读取都正常,但是外面定义函数就要cad
见下面,这样就能运行,假如 改成c:cal1_form1_textbox1_OnEditChanged 就失败,奇怪
(defun c:cal_form1_textbox1_OnEditChanged (newvalue /)
  (dcl_control_settext
    cal1_form1_textbox3
    (vl-princ-to-string
      (+ (distof newvalue)
         (distof (dcl_control_gettext cal1_form1_textbox2))
      )
    )
  )
)
(defun c:cal_form1_textbox2_OnEditChanged (newvalue /)
  (dcl_control_settext
    cal1_form1_textbox3
    (vl-princ-to-string
      (+ (distof newvalue)
         (distof (dcl_control_gettext cal1_form1_textbox1))
      )
    )
  )
)
(dcl_form_show cal1_form1)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2014-12-6 11:03:46 | 显示全部楼层
13808843088 发表于 2014-12-6 10:27
想多了,与text limit无关,在EditChanged事件中将焦点移到text box2中还不够,还要将text box2激活为编辑 ...

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-6 11:10:38 来自手机 | 显示全部楼层
守仁格竹GM 发表于 2014-12-6 11:01
textbox1和textbox2有一个设置就都同步了,这是为什么呢。
另外还有一个疑问。就是我把名称改为cal1后里 ...

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

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

发表于 2014-12-6 11:17:14 | 显示全部楼层
st788796 发表于 2014-12-6 11:10
dcl控件名规则是  文件名_formx_xxxx
在事件勾选后控件名(指针)就确定了,不能改

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-6 11:24:38 来自手机 | 显示全部楼层
守仁格竹GM 发表于 2014-12-6 11:17
怪就怪在我文件名是cal1而不是cal。定义函数却只认cal

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

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

发表于 2014-12-6 11:37:39 | 显示全部楼层
st788796 发表于 2014-12-6 11:24
不注意就容易犯的错误,打开odcl,取消事件后重新勾选

确实是这样,这个错误确实不容易发现{:soso_e113:}
接着第一个话题
textbox1和textbox2其中任何一个设置为同步即可实现功能,这是为什么呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-6 11:40:37 来自手机 | 显示全部楼层
守仁格竹GM 发表于 2014-12-6 11:37
确实是这样,这个错误确实不容易发现
接着第一个话题
textbox1和textbox2其中任何一个设 ...

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-12-6 11:56:47 | 显示全部楼层
守仁格竹GM 发表于 2014-12-6 11:37
确实是这样,这个错误确实不容易发现
接着第一个话题
textbox1和textbox2其中任何一个设 ...

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-12-6 12:01:11 来自手机 | 显示全部楼层
newer 发表于 2014-12-6 11:56
为什么不喜欢起个变量名去引用控件呢? 文件名引用万一以后文件名变了怎么办?

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

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

发表于 2014-12-6 13:25:48 | 显示全部楼层
st788796 发表于 2014-12-6 11:40
不明白你你说的是哪个例子?

就比如你发的这个例子,
只给textbox1设置了1-Asynchronous,textbox2依然设置的是0-Synchronous,这样也实现了同步,
而不需要textbox1和textbox2都设置为1-Asynchronous
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 14:12 , Processed in 0.319674 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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