无聊,发个对话框玩玩,求高手改进~~~~
(defun MAKE-EditDCL(lst FILENAME / F1 I);
FILENAME 对话框文件保存位置
;lst 点对表((标签1 . 值1) (标签2 . 值2) (标签3 . 值3) (标签4 . 值4))
(if(setq F1 (open FILENAME "w"))
(progn
(write-line "EditDCL: dialog{ label = \"测试对话框\";" F1 )
(write-line ":boxed_column { label=\"内容列表\";"F1)
(setq I 1)
(foreach n lst
(progn
(write-line (strcat":edit_box{ label=\"" (vl-princ-to-string (car n)) "\"; value=\"" (vl-princ-to-string (cdr n)) "\";key = \"KEY" (itoa I) "\";}" ) F1 )
(setq I (1+ I))
)
)
(write-line "}" F1)
(write-line "ok_only;" F1)
(write-line "}" F1)
(close F1)
t
)
)
)
;测试测试~~~
(defun c:tt()
(setq lst '((标签1 . 值1) (标签2 . 值2) (标签3 . 值3) (标签4 . 值4)))
(MAKE-EditDCL lst "d:\\11.dcl")
)测试生成的文件:EditDCL: dialog{ label = "测试对话框";
:boxed_column { label="内容列表";
:edit_box{ label="标签1"; value="值1";key = "KEY1";}
:edit_box{ label="标签2"; value="值2";key = "KEY2";}
:edit_box{ label="标签3"; value="值3";key = "KEY3";}
:edit_box{ label="标签4"; value="值4";key = "KEY4";}
}
ok_only;
}
根据点对表,生成相应的对话框.
求改进,如果列表太长,屏幕显示不过来,求以10分栏显示.
(defun c:tt (/ ilst)
(xyp-initSet '(t1 t2 t3 t4) '("值1" "值2" "值3" "值4"))
(setq ilst '(("t1" "标签1" "str" "8")
("t2" "标签2" "str" "8")
("t3" "标签3" "str" "8")
("t4" "标签4" "str" "8")
"spacer;"
)
)
(xyp-Dcl-Init Ilst "【测试对话框】" t)
(princ)
) 我想问,你想干嘛? xyp1964 发表于 2014-6-6 14:39 static/image/common/back.gif
院长,没解决实际问题啊,我问的是:将文本框每10个分一栏.
举个例子说,如果表数据超过30,看起来就是一个细长细长的对话框,很难看.分栏显示效果会好些~~~ 本帖最后由 ZZXXQQ 于 2014-6-9 20:40 编辑
(defun MAKE-EditDCL (lst FILENAME / F1 I)
;FILENAME 对话框文件保存位置
;lst 点对表((标签1 . 值1) (标签2 . 值2) (标签3 . 值3) (标签4 . 值4))
(if (setq F1 (open FILENAME "w")) (progn
(write-line "EditDCL:dialog{label=\"测试对话框\";" F1)
(write-line ":boxed_column{label=\"内容列表\";" F1)
(write-line ":row{\n:column{" F1)
(setq I 1)
(foreach n lst
(write-line
(strcat ":edit_box{label=\"" (vl-princ-to-string (car n))
"\";value=\"" (vl-princ-to-string (cdr n))
"\";key=\"KEY" (itoa I) "\";}" ) F1)
(if (= (rem i 10) 0) (write-line "}\n:column{" F1))
(setq I (1+ I))
)
(if (/= (rem (1- i) 10) 0) (write-line "}" F1))
(write-line "}\n}" F1)
(write-line "ok_only;" F1)
(write-line "}" F1)
(close F1)
t
))
)
rem,Z版就是热心肠,问题解决!
表数据超过30——啥功能这么复杂? 在做城市规划的时候,地块属性包括
地块编号
用地性质名称
用地性质代码
地块面积
容积率(上限)
容积率(下限)
建筑密度(上限)
绿地率(上限)
绿地率(下限)
建筑限高
配套公建
项目类型
项目名称
项目规模
备注
建筑面积
绿地面积
道路面积
人口
户数
机动车位
自行车位
兼容用地
兼容比例
地下开发深度
地下性质
建筑后退(东)
建筑后退(南)
建筑后退(西)
建筑后退(北)
出入口方位
其他
^^^^^^
如果再算上地块的用水\用电\燃气这些指标,你说有可能超过30没? 5楼改了,再试试。 (defun MAKE-EditDCL (lst DlgName FILENAME / F1 I)
;FILENAME 对话框文件保存位置
;lst 表
(if (setq F1 (open FILENAME "w")) (progn
(write-line (strcat "EditDCL:dialog{label=\"" (car DlgName) "\";") F1)
(write-line (strcat ":boxed_column{label=\"" (cadr DlgName) "\";") F1)
(foreach n lst
(progn
(write-line
(strcat":edit_box{ label=\"" (vl-princ-to-string (car n)) "\"; value=\"" (vl-princ-to-string (cadr n)) "\";key = \"" (vl-princ-to-string (caddr n)) "\";}" )
F1 )
)
)
(write-line "}" F1)
(write-line "ok_only;" F1)
(write-line "}" F1)
(close F1)
t
)
)
)
(defun c:tt()
(setq lst '(("标签1" "str" "key1")
("标签2" "str" "key2")
("标签3" "str" "key3")
("标签4" "str" "key4")
)
)
(MAKE-EditDCL lst '("【对话框名称】" "列表项目") "d:\\11.dcl" )
)
页:
[1]
2