 - (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分栏显示.
|