找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2716|回复: 5

[求助] [求助]:对话框问题(记住上一次选择按钮)

[复制链接]
发表于 2009-11-30 16:46:59 | 显示全部楼层 |阅读模式

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

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

×
求助各位前辈了,帮帮我们这些新手

问题:对话框单选一按钮定义为key = "c1" 、key = "c2"→key = "c9"

程序定义按钮动作为:

(setq i 1)

(repeat nn
       (action_tile (strcat "c" (itoa i)) "(wr_txt)")  ;;;(defun wr_txt()为选择各按钮后的操作
       (setq i (1+ i))
     )

我想对话框能记忆上一次选择的按钮,麻烦各位前辈指点了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2009-11-30 17:13:18 | 显示全部楼层
上一次响应的控件只要
(action_tile key "(setq *Key $key) (done_dialog 1)"

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

使用道具 举报

 楼主| 发表于 2009-12-1 10:59:53 | 显示全部楼层
谢谢你的回复,但我想知道怎么应用到上面的句子中
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2009-12-5 20:58:12 | 显示全部楼层

Re: [求助]:对话框问题(记住上一次选择按钮)

最初由 tanle2020 发布
[B]求助各位前辈了,帮帮我们这些新手

问题:对话框单选一按钮定义为key = "c1" 、key = "c2"→key = "c9"

程序定义按钮动作为:

(setq i 1)

(repeat nn
       (action_tile (strcat "c" (itoa i)) "(wr_... [/B]


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

使用道具 举报

 楼主| 发表于 2009-12-8 13:15:26 | 显示全部楼层
谢谢斑竹的回复,可能我描述的不清楚,下面我把两个文件贴上来,还望斑竹批批。
LISP:
;;;文字说明
(defun c:tt (/ ok txt_tb txt dcl_id fp nn diag init wr_txt)
  (defun diag (/ i)
    (if        (> (setq dcl_id (load_dialog "wzsm")) 0)
      (progn
        (if (new_dialog "wzsm" dcl_id)
          (progn
            (start_list "what")                ;将词组显示到列表框内
            (mapcar 'add_list txt_tb)
            (end_list)
            (setq i 1)
            (setq textno 0)
            (repeat nn
              (action_tile (strcat "c" (itoa i)) "(wr_txt)")
              (setq i (1+ i))
            )                                ;点取词组分类项后的操作
            (action_tile
              "what"
              "(setq textno $value)(setq i (atoi $value))(setq txt (nth i txt_tb))(set_tile \"sel_ok\" txt)"
            )
            (action_tile "sel_ok" "(setq txt $value)")
            (action_tile
              "accept"
              "(setq ok T)(done_dialog 1)(unload_dialog dcl_id)"
            )
            (action_tile "cancel" "(unload_dialog dcl_id)")
            (setq what_next (start_dialog))
          )
        )
      )
    )
  )


                                        ; 初始化程序, 把第1个分组项中的词组读入表txt_tb中


  (defun init (/ fname fp txt1)
    (setq fname (findfile "$txt1.dat"))
    (if        (not fname)
      (progn
        (princ "\n文件 $TXT1.DAT 不存在 !")
        (exit)
      )                                        ; 文件不存在, 则退出
    )
    (setq fp (open fname "r"))
    (setq txt_tb '())
    (while (setq txt1 (read-line fp))
      (setq txt_tb (cons txt1 txt_tb))
    )
    (close fp)
    (setq txt_tb (reverse txt_tb))
    (setq old_nn 1)                        ;记录索引号
  )

                                        ; 更换列表框内词组显示内容

  (defun wr_txt        (/ fname fname1 fp txt1 i)
    (setq i 1)
    (while (<= i nn)                        ; 判别哪个词组项被点中
      (if (= (get_tile (strcat "c" (itoa i))) "1")
        (setq fname1 (strcat "$txt" (itoa i) ".dat")
              i             nn
        )
      )
      (setq i (1+ i))
    )
    (if        (setq fname (findfile fname1))        ; 查找文件是否存在
      (progn
        (setq old_nn (atoi (substr fname1 5))) ;记录索引号
        (setq fp (open fname "r"))
        (setq txt_tb '())
        (while (setq txt1 (read-line fp)) ;依次读出各词组
          (setq txt_tb (cons txt1 txt_tb))
        )
        (setq fnm (close fp))
        (setq txt_tb (reverse txt_tb))
        (start_list "what")                ;在列表框内显示词组内容
        (mapcar 'add_list txt_tb)
        (end_list)
      )                                        ; progn
      (progn
        (alert (strcat "文件" fname1 "不存在!"))
        (set_tile (strcat "c" (itoa old_nn)) "1") ;恢复原记录号
      )
    )                                        ; if
  )

  ;;--------------------------------------------------------------------------------

                                        ; 主程序开始


  (setq nn 9)                                ; 词组分类数
  (init)                                ; 初始化
  (diag)                                ; 驱动对话框
  (if (and ok txt)
    (progn
      (setq pt1 (getpoint "\n请输入文字插入点:"))
      (command "text" pt1 3.5 0 txt)
    )
  )
  (princ)
)


DCL:

wzsm: dialog {
label = "常用片语";
: row {
: boxed_column {
label = " 索 引 ";
: radio_button {
label = "c1"; // 多选一按钮
key = "c1";
value = "1";         // 初始值为"1", 表示选中
}
: radio_button {
label = "c2";
key = "c2";
}
: radio_button {
label = "c3";
key = "c3";
}
: radio_button {
label = "c4";
key = "c4";
}
: radio_button {
label = "c5";
key = "c5";
}
: radio_button {
label = "c6";
key = "c6";
}
: radio_button {
label = "c7";
key = "c7";
}
: radio_button {
label = "c8";
key = "c8";
}
: radio_button {
label = "c9";
key = "c9";
}
}
: list_box {
label = "文字内容";
key = "what";
height = 20;
width = 30;
allow_accept = true;
}
}
: edit_box {
label = "输入文字:";
key = "sel_ok";
}
ok_cancel;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-12-8 14:33:50 | 显示全部楼层
[php];; 常用片语
(defun c:test848 (/ Ilst)
  (cmdlasc0)
  (defun main-pro (/ pt)
    (while (setq pt (getpoint "\n请输入文字插入点<退出>: "))
      (xyp-Text 5 pt txt)
    )
  )
  (defun aaa (/ fname)
    (xyp-Dcl-Gettile '("c1" "c2" "c3" "c4" "c5" "c6" "c7" "c8" "c9"))
    (cond ((= c1 "1") (setq fn "$txt1.txt"))
          ((= c2 "1") (setq fn "$txt2.txt"))
          ((= c3 "1") (setq fn "$txt3.txt"))
          ((= c4 "1") (setq fn "$txt4.txt"))
          ((= c5 "1") (setq fn "$txt5.txt"))
          ((= c6 "1") (setq fn "$txt6.txt"))
          ((= c7 "1") (setq fn "$txt7.txt"))
          ((= c8 "1") (setq fn "$txt8.txt"))
          ((= c9 "1") (setq fn "$txt9.txt"))
    )
    (if        (setq fname (findfile fn))
      (progn
        (setq lst (XYP-TXT2LST fname))
        (XYP-SHOW-LIST "p01" lst)
      )
      (progn
        (alert (strcat "文件 " fn " 不存在"))
        (setq lst '())
      )
    )
  )
  (defun bbb (/ tx)
    (xyp-Dcl-Gettile '("p01"))
    (set_tile "txt" (nth (atoi p01) lst))
  )
  (xyp-initSet '(c1 c2 c3 c4 c5 c6 c7 c8 c9 txt)
               '("1" "0" "0" "0" "0" "0" "0" "" "0" "")
  )
  (setq        lst  (if lst
               lst
               '()
             )
        Ilst '((nil nil ":row{")
               (nil nil ":boxed_radio_column{label=\"索引\";")
               ("c1" "c1" "radio" "(aaa)")
               ("c2" "c2" "radio" "(aaa)")
               ("c3" "c3" "radio" "(aaa)")
               ("c4" "c4" "radio" "(aaa)")
               ("c5" "c5" "radio" "(aaa)")
               ("c6" "c6" "radio" "(aaa)")
               ("c7" "c7" "radio" "(aaa)")
               ("c8" "c8" "radio" "(aaa)")
               ("c9" "c9" "radio" "(aaa)")
               (nil nil "}")
               ("p01" "文字内容" "list" "lst" "24" "10" "(bbb)")
               (nil nil "}")
               ("txt" "输入文字" "str" "16")
               (nil nil "spacer;")
               (nil nil "user""(aaa)")
              )
  )
  (if (= (xyp-Dcl-Init Ilst "【常用片语】" t) 1)
    (main-pro)
  )
  (cmdla1)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 18:33 , Processed in 0.287573 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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