AfraLisp Blog

The AutoLisp/Visual Lisp/VBA Resource Website

AfraLisp Blog

Home Newsletter Utter Rubbish Coding Tips AutoCAD Tips Contact Downloads WAUN

Home.

Page II.

DCL without the DCL File

Have you ever wanted to load and run a DCL file without having a DCL file?
"What are you talking about Kenny?"

Easy, let's take a simple AutoLisp dialog example and tweek the coding a little bit so that our program "writes" the DCL file for us. Copy and paste the following and save it as "TEST_DCL3.LSP".

;AUTOLISP CODING STARTS HERE
(prompt "\nType TEST_DCL3 to run.....")

(defun C:TEST_DCL3 ( / dcl_id fn fname)

(vl-load-com)

(create_dialog)

(setq dcl_id (load_dialog fname))
     (if (not (new_dialog "temp" dcl_id))
	 (exit )
     );if

(set_tile "name" "Enter Name Here")
(mode_tile "name" 2)
(action_tile "name" "(setq name $value)")
(action_tile "age" "(setq age $value)")
(action_tile "accept" "(val1)")

(start_dialog)
(unload_dialog dcl_id)

(alert (strcat "Your name is " name
               "\nand you are " age " years of age."))

(vl-file-delete fname)

(princ)

);defun

-----------------------

(defun val1 ()

(if (= (get_tile "name") "Enter Name Here")
	(progn
	   (set_tile "error" "You must enter a name!")
	   (mode_tile "name" 2)
	);progn
	(val2)
);if

);defun

-------------------

(defun val2 ()

(if (< (atoi (get_tile "age")) 1)
	(progn
	  (set_tile "error" "Invalid Age - Please Try Again!!")
	  (mode_tile "age" 2)
	);progn
	(done_dialog)
);if

);defun

-------------------

(defun create_dialog ()

(setq fname (vl-filename-mktemp "dcl.dcl"))

(setq fn (open fname "w"))

(write-line "temp : dialog { label = \"Test Dialog No 3\";
 : edit_box { label = \"Enter Your Name :\"; mnemonic = \"N\";
 key = \"name\"; alignment = centered; edit_limit = 30;
 edit_width = 30; } : edit_box { label = \"Enter Your Age :\";
 mnemonic = \"A\"; key =\"age\"; alignment = centered;
 edit_limit = 3; edit_width = 3; value = \"22\";
 } : button { key = \"accept\"; label = \"OK\";
 is_default = true; fixed_width = true; alignment = centered;
 } : errtile { width = 34; } }" fn)

(close fn)

);defun

(princ)
;AUTOLISP CODING ENDS HERE
            

Notice that there is no DCL file this time. Now load and run it.


See, what did I tell you? We've just loaded and ran a DCL file even though we haven't got one!!!
You could now compile this into a FAS file if you wished. (Hey, a FAS file with DCL - cool!)

On the next page, we'll have a closer look at this truly amazing phenomenon and have a closer look at the coding. At the same time, we'll get really clever and design ourselves a "Variable-auto-self-sizing-Dialog-Box-without-a-DCL-file".

 
The AutoLisp/Visual Lisp/VBA Resource Website

Copyright 1999-Perpetuity by AfraLisp

All rights reserved.
Information in this document is subject to change without notice.
Site created and maintained by Kenny Ramage

The AutoLisp/Visual Lisp/VBA Resource Website