乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 72|回复: 7

[编程交流] Popup\u列表

[复制链接]

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-6 06:14:17 | 显示全部楼层 |阅读模式
大家好,
 
我有一个问题如下。
 
我有一个发布的DCL&LISP,其中包含DCL中的popup\u list函数。
 
当我选择一个数字时。它通过在princ中显示choosen数来给出正确的结果。
 
当我再次运行相同的路由时,我希望在我上次从列表中选择的弹出列表中突出显示一个数字。
但它显示了列表的默认起始编号。
 
 
e、 如果我第一次选择7。
再次运行lisp。弹出窗口显示默认的1个数字。
我希望它是7。。。。正如我上次选择的那样
 
以下是DCL:-
  1. CCL : dialog {
  2.      label = "TEST" ;
  3.      alignment = centered;
  4. spacer;
  5. : row {
  6. : text {
  7.   label = "CHOOSE NUMBER :";
  8.   }
  9. : popup_list {
  10.   key = "LIST1";
  11.   width = 7;
  12.   fixed_width = true;
  13.   }
  14. }
  15. spacer;
  16. : row {
  17.    : ok_button {
  18.      width = 11;
  19.    }
  20.    : cancel_button {
  21.      width = 11;
  22.    }
  23. }
  24. }

 
这是Lisp:-
  1. (DEFUN C:TEST ()
  2. (setq LIST1@ '("1" "2" "3" "4" "5" "6" "7" "8"))
  3. (setq dcl_id (load_dialog "TEST.DCL"))
  4. (if (not (new_dialog "CCL" dcl_id))
  5.    (exit)
  6. )
  7. (start_list "LIST1")
  8. (mapcar 'add_list LIST1@)
  9. (end_list)
  10. (action_tile
  11.    "accept"
  12.    (strcat
  13.      "(Progn
  14. (setq LIST1 (atof (get_tile "LIST1")))"
  15.      "(done_dialog)(setq userclick T))"
  16.    )
  17. )
  18. (action_tile "cancel" "(done_dialog) (setq userclick nil)")
  19. (start_dialog)
  20. (unload_dialog dcl_id)
  21. (if userclick
  22.    (progn
  23.      (setq LIST1 (fix LIST1))
  24.      (setq LIST1 (nth LIST1 LIST1@))
  25.    )
  26. )
  27. (PRINC (STRCAT "Number Choosen = " LIST1))
  28. (PRINC)
  29. )

 
请引导我。。。。。
 
谢谢
 
当做
萨提什语
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:24:40 | 显示全部楼层
考虑以下代码:
 
DCL:
  1. ccl : [color=BLUE]dialog[/color]
  2. {
  3.    [color=BLUE]label[/color] = [color=MAROON]"Test"[/color];
  4.    [color=BLUE]spacer[/color];
  5.    : [color=BLUE]popup_list[/color]
  6.    {
  7.        [color=BLUE]key[/color] = [color=MAROON]"lst"[/color];
  8.        [color=BLUE]width[/color] = 7;
  9.        [color=BLUE]fixed_width[/color] = [color=BLUE]true[/color];
  10.        [color=BLUE]label[/color] = [color=MAROON]"CHOOSE NUMBER:"[/color];
  11.    }
  12.    [color=BLUE]spacer[/color]; [color=BLUE]ok_cancel[/color];
  13. }
LISP:
  1. ([color=BLUE]defun[/color] c:test ( [color=BLUE]/[/color] id lst )
  2.    ([color=BLUE]setq[/color] lst '([color=MAROON]"1"[/color] [color=MAROON]"2"[/color] [color=MAROON]"3"[/color] [color=MAROON]"4"[/color] [color=MAROON]"5"[/color] [color=MAROON]"6"[/color] [color=MAROON]"7"[/color] [color=MAROON]"8"[/color]))
  3.    ([color=BLUE]if[/color]
  4.        ([color=BLUE]and[/color]
  5.            ([color=BLUE]<[/color] 0 ([color=BLUE]setq[/color] id ([color=BLUE]load_dialog[/color] [color=MAROON]"test.dcl"[/color])))
  6.            ([color=BLUE]new_dialog[/color] [color=MAROON]"ccl"[/color] id)
  7.        )
  8.        ([color=BLUE]progn[/color]
  9.            ([color=BLUE]start_list[/color] [color=MAROON]"lst"[/color])
  10.            ([color=BLUE]foreach[/color] itm lst ([color=BLUE]add_list[/color] itm))
  11.            ([color=BLUE]end_list[/color])
  12.            ([color=BLUE]set_tile[/color] [color=MAROON]"lst"[/color] ([color=BLUE]cond[/color] (*num*) (([color=BLUE]setq[/color] *num* [color=MAROON]"0"[/color]))))
  13.            ([color=BLUE]action_tile[/color] [color=MAROON]"lst"[/color] [color=MAROON]"(setq *num* $value)"[/color])
  14.            ([color=BLUE]if[/color] ([color=BLUE]=[/color] 1 ([color=BLUE]start_dialog[/color]))
  15.                ([color=BLUE]princ[/color] ([color=BLUE]strcat[/color] [color=MAROON]"\nYou chose number: "[/color] ([color=BLUE]nth[/color] ([color=BLUE]atoi[/color] *num*) lst)))
  16.            )
  17.        )
  18.        ([color=BLUE]princ[/color] [color=MAROON]"\nUnable to load dialog."[/color])
  19.    )
  20.    ([color=BLUE]if[/color] ([color=BLUE]<[/color] 0 id) ([color=BLUE]unload_dialog[/color] id))
  21.    ([color=BLUE]princ[/color])
  22. )
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-6 06:37:09 | 显示全部楼层
以下是一些简要说明:
  1. (start_list "lst")
  2. (foreach itm lst (add_list itm))
  3. (end_list)
  4. (set_tile "lst" (cond (*num*) ((setq *num* "0"))))

 
我建议研究功能:
 
start\u列表
添加_列表
end_列表
set_平铺
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 06:45:42 | 显示全部楼层
非常感谢,先生。。。。。
 
获得了一些有用的知识。。。。我将研究您指出的函数。。。。。如果我还有任何疑问,我会回来的。
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-6 06:54:32 | 显示全部楼层
不客气satishrajdev
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:04:48 | 显示全部楼层
回复

使用道具 举报

55

主题

402

帖子

357

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
274
发表于 2022-7-6 07:11:01 | 显示全部楼层
Thanks a lot Sir.....
 
Got some useful knowledge.... I'll study the functions which you have pointed out..... And will come back if i got any further doubts.
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:19:02 | 显示全部楼层
You're welcome satishrajdev
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 18:35 , Processed in 1.371001 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表