明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 806|回复: 3

[讨论] DCL 二级对话框示例.更新视频

[复制链接]
发表于 2023-3-1 10:25 | 显示全部楼层 |阅读模式
本帖最后由 vitalgg 于 2023-3-2 00:19 编辑



因为 dcl 只支持模态对话框,所以打开 子对话框后,只有子对话框能获得焦点。如果要与主对话框交互,需先关闭子对话框。
  1. (defun dcl-main (/ *error* curr-page total-page dcl-fp dcl-tmp cb-flush-page cb-img1 cb-img2 cb-img3)
  2.   "DCL多级对话框示例"
  3.   ""
  4.   "(example:dcl-dialog)"
  5.   (require (quote dcl:*))
  6.   
  7.   (defun sub-dialog (m n / curr-page total-page dcl-fp dcl-tmp cb-flush-page page-init)
  8.     "m n 表示图像的 行 列个数"
  9.     "1. Model 建立数据模型。"
  10.     (setq curr-page 0)
  11.     (setq total-page 3)
  12.     "2. View 建立显示视图。"
  13.     (dcl:dialog "subimgs")
  14.     (progn (dcl:hr 0.08)
  15.      (write-line ":text{key=\"num\";}"
  16.            dcl-fp)
  17.      (dcl:hr 0.08)
  18.      (setq i 0)
  19.      (dcl:begin-cluster "column" "")
  20.      (repeat m
  21.        (dcl:begin-cluster "row" "")
  22.        (repeat n
  23.          (dcl:image-button (strcat "subimg" (itoa (setq i (1+ i))))
  24.                20 10 nil))
  25.        (dcl:end-cluster)
  26.        )
  27.      (dcl:end-cluster)
  28.      (dcl:hr 0.08)
  29.      (dcl:paging t))
  30.     (dcl:dialog-end-ok-cancel)
  31.     "3. Control 创建控制流程"
  32.     (defun cb-flush-page nil (set_tile "num"
  33.                (strcat "当前页面: "
  34.                  (itoa (1+ curr-page)))))
  35.     "4. New 一个新对话框对象。"
  36.     (dcl:new "subimgs")
  37.     "5. Init 初始化对话框"
  38.     (set_tile "title"
  39.         "子窗口")
  40.     (paging-init)
  41.     (cb-flush-page)
  42.     "6. Show dialog 显示并进行交互"
  43.     (dcl:show)
  44.     (princ))

  45.   "1. Model 建立数据模型。"
  46.   (setq curr-page 0)
  47.   (setq total-page 5)
  48.   "2. View 建立显示视图。"
  49.   (dcl:dialog "example")
  50.   (progn (dcl:hr 0.08)
  51.    (write-line ":text{key=\"num\";}"
  52.          dcl-fp)
  53.    (dcl:hr 0.08)
  54.    (setq i 0)
  55.    (dcl:begin-cluster "column" "")
  56.    (repeat 4
  57.      (dcl:begin-cluster "row" "")
  58.      (repeat 3
  59.        (dcl:image-button (strcat "img" (itoa (setq i (1+ i))))
  60.              30 10 nil))
  61.      (dcl:end-cluster)
  62.      )
  63.    (dcl:end-cluster)
  64.    (dcl:hr 0.08)
  65.    (dcl:paging t))
  66.   (dcl:dialog-end-ok-cancel)
  67.   "3. Control 创建控制流程"
  68.   (defun cb-flush-page nil (set_tile "num"
  69.              (strcat "当前页面: "
  70.                (itoa (1+ curr-page)))))
  71.   (defun cb-img1 () (sub-dialog 2 2))
  72.   (defun cb-img2 () (sub-dialog 3 3))
  73.   (defun cb-img3 () (sub-dialog 3 1))
  74.   "4. New 一个新对话框对象。"
  75.   (dcl:new "example")
  76.   "5. Init 初始化对话框"
  77.   (set_tile "title" "主窗口")
  78.   (paging-init)
  79.   (cb-flush-page)
  80.   "6. Show dialog 显示并进行交互"
  81.   (dcl:show)
  82.   (princ))


相关内容 :
MVCNIS 方法:6步实现动态DCL编程
https://gitee.com/atlisp/atlisp- ... lisp/dcl-mvcnis.org

函数说明: *:* 这类的函数均为 @lisp 函数库内定义的函数。详见
https://gitee.com/atlisp/atlisp-lib

评分

参与人数 1明经币 +1 收起 理由
zml84 + 1 不错!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-3-1 11:19 | 显示全部楼层
没太看懂,需要细细琢磨学习一下代码
 楼主| 发表于 2023-3-1 11:58 | 显示全部楼层
gdfyhao 发表于 2023-3-1 11:19
没太看懂,需要细细琢磨学习一下代码

相关内容 :
MVCNIS 方法:6步实现动态DCL编程
https://gitee.com/atlisp/atlisp- ... lisp/dcl-mvcnis.org

函数说明: *:* 这类的函数均为 @lisp 函数库内定义的函数。详见
https://gitee.com/atlisp/atlisp-lib
 楼主| 发表于 2023-3-2 00:22 | 显示全部楼层
本帖最后由 vitalgg 于 2023-3-2 00:28 编辑

更新代码。
已收录至 @lisp 函数库 example 分类中。

在安装了 @lisp 的 CAD 命令行 输入

  1. (fun:e.g. 'example:dcl-subdialog)


即可直接运行示例。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 18:09 , Processed in 0.268401 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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