初始化要显示的数据。
以表格为例,假如有 1000条数据,每条数据有5项内容。
需要初始化以下三个必要变量
"1. Model 建立数据模型。"
(setq lst-cell
(quote (("里程L" "高程H" "半径R")
(0.0 218.0 0.0)
(315.589 226.02 1000)
(815.589 261.02 1000)
(988.596 255.83 1000)
(1407.44 260.01 1000)
(1578.32 265.14 1000)
(1768.39 264.57 1000)
(2068.39 240.57 1000)
(2168.39 237.57 1000)
(2439.11 215.91 1000)
(2527.98 213.9 10.0)
(315.589 226.02 1000)
(815.589 261.02 1000)
(988.596 255.83 1000)
(1407.44 260.01 1000)
(1578.32 265.14 1000)
(1768.39 264.57 1000)
(2068.39 240.57 1000)
(2168.39 237.57 1000)
(2439.11 215.91 1000)
(2527.98 213.9 10.0)
(315.589 226.02 1000)
(815.589 261.02 1000)
(988.596 255.83 1000)
(1407.44 260.01 1000)
(1578.32 265.14 1000)
(1768.39 264.57 1000)
(2068.39 240.57 1000)
(2168.39 237.57 1000)
(2439.11 215.91 1000)
(2527.98 213.9 10.0)
(315.589 226.02 1000)
(815.589 261.02 1000)
(988.596 255.83 1000)
(1407.44 260.01 1000)
(1578.32 265.14 1000)
(1768.39 264.57 1000)
(2068.39 240.57 1000)
(2168.39 237.57 1000)
(2439.11 215.91 1000)
(2527.98 213.9 10.0))))
(setq accept-hook nil)
(setq lst-cellraw lst-cell)
(setq cell1tmp-data lst-cell)
(setq cell1curr-page 0)
使用 lisp 代码创建dcl文件。
dcl 文件用于设置,各个控件(tile)的尺寸及布局方式。dcl 文件内容不包含Model中要显示数据。
数据的显示将在 Init 中实现。
@lisp函数库提示了一些组合控件,如表格、多行文字、翻页、Tabs、滚动条等。可以快速实现DCL设计。
"2. View 建立显示视图。"
(dcl:dialog "example")
(dcl:cell "cell1"
9 (length (car cell1tmp-data))
t t t t)
(dcl:dialog-end-ok-cancel)
在这里定义对话框的回调函数,回调函数命名一般以 cb- 或 callback- 开头,用于区别一般函数。
还以表格为例: 我们需要定义 cb-scrollbar 函数,用于实现操作滚动条时,表格内的数据可以更新。
如果引入了 分页控件,则需要定义cb-flush-page来实现表格数据的更新。
扩展框件 dcl:cell 已包含默认的回调函数。
以上 MVC 前三个步骤实现了DCL及业务逻辑的定义。 现在可以载入DCL 到内存了。
本步骤只需一行代码。
(dcl:new "example") ;; name 为 view 步骤中 dcl:dialog 创建的对话框名,两者需一致。
现在需要初始化一些显示值,比如当前页,表格数据的显示等。
如分页控件的 (paging-init),显示页面 (cb-flush-page) 等。
"5. Init 初始化对话框"
(set_tile "title"
"Example 标题")
(dcl:show-celldata "cell1")
以上步骤完整无误,现在只需显示即可。也是一行搞定。
(dcl:show)
不过我们还需要做后续的收尾工作。比如 关闭对话框后需要删除 临时创建的dcl文件。返回给程序后续需要的结果。
示例代码见 http://atlisp.cn/function/example:dcl-dialog dcl系列。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。