The AutoLISP Message Box
This library of AutoLisp Functions closely emulates the Visual Basic Message Box Function. It will display 5 different types of message boxes and allows you to enter 3 text message lines and customise the Message Box title.
The message boxes available are :
- OK Only
- OK Cancel
- Rentry Cancel
- Yes No
- Yes No Cancel
The syntax for usage is as follows :
(function name "message1" "message2" "message3" "title")
For example:
(lspokcancel "This is the first line" "This is the second line" "This is the third line" "This is the title")
Here is a detailed explanation of each message box:
OK Only
Syntax : (lspOkOnly "message1" "message2"
"message3" "title")
This message box returns nothing as it is used to convey a message only.
OK Cancel
Syntax : (lspOkCancel "message1" "message2"
"message3" "title")
This message box returns True if OK selected and nil if Cancel selected.
Rentry Cancel
Syntax : (lspRentryCancel "message1" "message2"
"message3" "title")
This message box returns True if Rentry selected and nil if Cancel selected.
Yes No
Syntax : (lspYesNo "message1" "message2"
"message3" "title")
This message box returns True if Yes selected and "F" if No selected.
Yes No Cancel
Syntax : (lspYesNoCancel "message1" "message2"
"message3" "title")
This message box returns True if Yes selected, "F" if No selected and nil if Cancel selected.
Source Coding
Here is the DCL Source Coding:
lspOkCancel : dialog { key = "main"; : column { : text { key = "message1"; } : text { key = "message2"; } : text { key = "message3"; } } : row { : spacer { width = 1; } : button { label = "OK"; key = "accept"; width = 12; fixed_width = true; mnemonic = "O"; is_default = true; } : button { label = "Cancel"; key = "cancel"; width = 12; fixed_width = true; mnemonic = "C"; is_cancel = true; } : spacer { width = 1;} } } //////////////////////////////////////////////// lspYesNo : dialog { key = "main"; : column { : text { key = "message1"; } : text { key = "message2"; } : text { key = "message3"; } } : row { : spacer { width = 1; } : button { label = "Yes"; key = "yes"; width = 12; fixed_width = true; mnemonic = "Y"; is_default = true; } : button { label = "No"; key = "no"; width = 12; fixed_width = true; mnemonic = "N"; is_cancel = true; } : spacer { width = 1;} } } //////////////////////////////////////////// lspOkOnly : dialog { key = "main"; : column { : text { key = "message1"; } : text { key = "message2"; } : text { key = "message3"; } } : row { : spacer { width = 1; } : button { label = "OK"; key = "accept"; width = 12; fixed_width = true; mnemonic = "O"; is_default = true; alignment = centered; } : spacer { width = 1;} } } //////////////////////////////////////////////// lspYesNoCancel : dialog { key = "main"; : column { : text { key = "message1"; } : text { key = "message2"; } : text { key = "message3"; } } : row { : spacer { width = 1; } : button { label = "Yes"; key = "yes"; width = 12; fixed_width = true; mnemonic = "Y"; is_default = true; } : button { label = "No"; key = "no"; width = 12; fixed_width = true; mnemonic = "N"; } : button { label = "Cancel"; key = "cancel"; width = 12; fixed_width = true; mnemonic = "C"; is_cancel = true; } : spacer { width = 1;} } } //////////////////////////////////////////// lspRentryCancel : dialog { key = "main"; : column { : text { key = "message1"; } : text { key = "message2"; } : text { key = "message3"; } } : row { : spacer { width = 1; } : button { label = "Rentry"; key = "rentry"; width = 12; fixed_width = true; mnemonic = "R"; is_default = true; } : button { label = "Cancel"; key = "Cancel"; width = 12; fixed_width = true; mnemonic = "C"; is_cancel = true; } : spacer { width = 1;} } } ////////////////////////////////////////////
And the Autolisp Code:
(defun lspOkCancel (message1 message2 message3 main) (setq dcl_id (load_dialog "msgbox.dcl")) (if (not (new_dialog "lspOkCancel" dcl_id)) (exit) ) (set_tile "message1" message1) (set_tile "message2" message2) (set_tile "message3" message3) (set_tile "main" main) (action_tile "cancel" "(done_dialog) (setq result nil)" ) (action_tile "accept" "(done_dialog) (setq result T)" ) (start_dialog) (unload_dialog dcl_id) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun lspYesNo (message1 message2 message3 main) (setq dcl_id (load_dialog "msgbox.dcl")) (if (not (new_dialog "lspYesNo" dcl_id)) (exit) ) (set_tile "message1" message1) (set_tile "message2" message2) (set_tile "message3" message3) (set_tile "main" main) (action_tile "no" "(done_dialog) (setq result \"F\")" ) (action_tile "yes" "(done_dialog) (setq result T)" ) (start_dialog) (unload_dialog dcl_id) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun lspOkOnly (message1 message2 message3 main) (setq dcl_id (load_dialog "msgbox.dcl")) (if (not (new_dialog "lspOkOnly" dcl_id)) (exit) ) (set_tile "message1" message1) (set_tile "message2" message2) (set_tile "message3" message3) (set_tile "main" main) (action_tile "yes" "(done_dialog)" ) (start_dialog) (unload_dialog dcl_id) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun lspYesNoCancel (message1 message2 message3 main) (setq dcl_id (load_dialog "msgbox.dcl")) (if (not (new_dialog "lspYesNoCancel" dcl_id)) (exit) ) (set_tile "message1" message1) (set_tile "message2" message2) (set_tile "message3" message3) (set_tile "main" main) (action_tile "no" "(done_dialog) (setq result \"F\")" ) (action_tile "yes" "(done_dialog) (setq result T)" ) (action_tile "cancel" "(done_dialog) (setq result nil)" ) (start_dialog) (unload_dialog dcl_id) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun lspRentryCancel (message1 message2 message3 main) (setq dcl_id (load_dialog "msgbox.dcl")) (if (not (new_dialog "lspRentryCancel" dcl_id)) (exit) ) (set_tile "message1" message1) (set_tile "message2" message2) (set_tile "message3" message3) (set_tile "main" main) (action_tile "cancel" "(done_dialog) (setq result nil)" ) (action_tile "rentry" "(done_dialog) (setq result T)" ) (start_dialog) (unload_dialog dcl_id) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (princ)
If you would like the source coding for the the Message Box routine, just place your mouse here and click… Enjoy.