根据某教程的源码
在对话框定义文件中,有一个清单选框,会显示出指定档案的内容(全是中文字);当使用者选取清单中的项目时,该项目的中文字便会显示在下面的编辑框里(加在原有字符串的后面);当按下确定钮时,对话框结束,并使用TEXT指令将编辑框内的文字插入至绘图屏幕上.
最终读取到编辑框里出错,这个代码感觉逻辑不是很清晰。暂时脑袋有点短路,请路过的大虾看看还有其他方法读取多个不同txt文件到编辑框没
- ;主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (DEFUN C:LBOX () (SETQ DCL_ID (LOAD_DIALOG (findfile "LBOX.DCL") ) CHK 0)
- (NEW_DIALOG "LBOX" DCL_ID)
- (ADDL)
- (ACTION_TILE "LBOX_T" "(ADDL)") ;新增的下拉式选框组件动作
- (ACTION_TILE "LBOX_L" "(SETQ TMP_R (ATOI (GET_TILE "LBOX_L")))(SETC)")
- (ACTION_TILE "accept" "(SETQ CHK 1
- TMP_S (GET_TILE "LBOX_E"))(DONE_DIALOG)")
- (START_DIALOG) (UNLOAD_DIALOG DCL_ID)
- (IF (= CHK 1)
- (COMMAND "TEXT" (GETPOINT "Select text insert point :") "0" TMP_S)
- )
- (PRINC))
- (DEFUN ADDL()
- (cond
-
- (= (GET_TILE "LBOX_T") "0") ;检查选择了的主题
- (SETQ F_ID (OPEN (findfile "TEXT1.txt") "r")) ;开启档案1
- (= (GET_TILE "LBOX_T") "1")
- (SETQ F_ID (OPEN (findfile "TEXT2.txt") "r")) ;开启档案2
- (= (GET_TILE "LBOX_T") "2")
- (SETQ F_ID (OPEN (findfile "TEXT3.txt") "r")) ;开启档案2
- )
- (SETQ TMP_T (READ-LINE F_ID) TMP_L (LIST ""))
- (WHILE (/= TMP_T NIL)
- (SETQ TMP_L (APPEND TMP_L (LIST TMP_T)))
- (SETQ TMP_L (READ-LINE F_ID))
- )
- (CLOSE F_ID)
- (SETQ TMP_L (LIST (CDR TMP_L)))
- (START_LIST "LBOX_L" 3 0)
- (MAPCAR 'ADD_LIST (CAR TMP_L))
- (END_LIST))
-
- (DEFUN SETC()
-
- (cond
-
- (= (GET_TILE "LBOX_T") "0") ;检查选择了的主题
- (SETQ F_ID (OPEN (findfile "TEXT1.txt") "r")) ;开启档案1
- (= (GET_TILE "LBOX_T") "1")
- (SETQ F_ID (OPEN (findfile "TEXT2.txt") "r")) ;开启档案2
- (= (GET_TILE "LBOX_T") "2")
- (SETQ F_ID (OPEN (findfile "TEXT3.txt") "r")) ;开启档案2
- )
- (IF (> TMP_R 0)
- (REPEAT TMP_R (READ-LINE F_ID)))
- (SETQ TMP_S (GET_TILE "LBOX_E"))
- (SETQ TMP_S (STRCAT TMP_S (READ-LINE F_ID)))
- (CLOSE F_ID)
- (SET_TILE "LBOX_E" TMP_S))
复制代码 下面是对话框DCL代码
- //对话框DCL代码;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- LBOX:dialog
- { label="Create chinese" ;
- :popup_list //下拉式清单选框组件
- { label="中文主题" ;
- key="LBOX_T" ;
- width=25;
- fixed_width=true;
- list="玻璃门窗\n五金配件\n其他";
- }
- :list_box //清单选框组件
- { label="中文字" ;
- key="LBOX_L" ;
- width=25;
- height=8;
- fixed_width=true;
- fixed_height=true;
- }
- :edit_box //编辑框组件
- { label="中文字" ;
- key="LBOX_E" ;
- width=25;
- fixed_width=true;
- }
- ok_cancel;
- }
|