AfraLISP - Learn AutoLISP for AutoCAD productivity

Dialog Box Layout - Part 2

by Kenny Ramage

Right, now sit up straight and pay attention. Open a new file and copy and paste this into it :

afra1 : dialog {
	label = "B" ;
 
	: column {
 
	: row {
 
		: text {label = "No";}
		: text {label = "Chainage";}
		: text {label = "Existing";}
		: text {label = "Chainage";}
		: text {label = "Proposed";}
 
	}
 
	: row {
		: text {label = "  1";}
		: edit_box {key = eb1; width = 7; value = "000.000";}
		: edit_box {key = eb1a; width = 7; value = "00.000";}
		: edit_box {key = eb1b; width = 7; value = "000.000";}
		: edit_box {key = eb1c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  2";}
		: edit_box {key = eb2; width = 7; value = "000.000";}
		: edit_box {key = eb2a; width = 7; value = "00.000";}
		: edit_box {key = eb2b; width = 7; value = "000.000";}
		: edit_box {key = eb2c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  3";}
		: edit_box {key = eb3; width = 7; value = "000.000";}
		: edit_box {key = eb3a; width = 7; value = "00.000";}
		: edit_box {key = eb3b; width = 7; value = "000.000";}
		: edit_box {key = eb3c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  4";}
		: edit_box {key = eb4; width = 7; value = "000.000";}
		: edit_box {key = eb4a; width = 7; value = "00.000";}
		: edit_box {key = eb4b; width = 7; value = "000.000";}
		: edit_box {key = eb4c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  5";}
		: edit_box {key = eb5; width = 7; value = "000.000";}
		: edit_box {key = eb5a; width = 7; value = "00.000";}
		: edit_box {key = eb5b; width = 7; value = "000.000";}
		: edit_box {key = eb5c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  6";}
		: edit_box {key = eb6; width = 7; value = "000.000";}
		: edit_box {key = eb6a; width = 7; value = "00.000";}
		: edit_box {key = eb6b; width = 7; value = "000.000";}
		: edit_box {key = eb6c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  7";}
		: edit_box {key = eb7; width = 7; value = "000.000";}
		: edit_box {key = eb7a; width = 7; value = "00.000";}
		: edit_box {key = eb7b; width = 7; value = "000.000";}
		: edit_box {key = eb7c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  8";}
		: edit_box {key = eb8; width = 7; value = "000.000";}
		: edit_box {key = eb8a; width = 7; value = "00.000";}
		: edit_box {key = eb8b; width = 7; value = "000.000";}
		: edit_box {key = eb8c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  9";}
		: edit_box {key = eb9; width = 7; value = "000.000";}
		: edit_box {key = eb9a; width = 7; value = "00.000";}
		: edit_box {key = eb9b; width = 7; value = "000.000";}
		: edit_box {key = eb9c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "10";}
		: edit_box {key = eb10; width = 7; value = "000.000";}
		: edit_box {key = eb10a; width = 7; value = "00.000";}
		: edit_box {key = eb10b; width = 7; value = "000.000";}
		: edit_box {key = eb10c; width = 7; value = "00.000";}
	}
	: row {
	: text {label = "11";}
		: edit_box {key = eb11; width = 7; value = "000.000";}
		: edit_box {key = eb11a; width = 7; value = "00.000";}
		: edit_box {key = eb11b; width = 7; value = "000.000";}
		: edit_box {key = eb11c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "12";}
		: edit_box {key = eb12; width = 7; value = "000.000";}
		: edit_box {key = eb12a; width = 7; value = "00.000";}
		: edit_box {key = eb12b; width = 7; value = "000.000";}
		: edit_box {key = eb12c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "13";}
		: edit_box {key = eb13; width = 7; value = "000.000";}
		: edit_box {key = eb13a; width = 7; value = "00.000";}
		: edit_box {key = eb13b; width = 7; value = "000.000";}
		: edit_box {key = eb13c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "14";}
		: edit_box {key = eb14; width = 7; value = "000.000";}
		: edit_box {key = eb14a; width = 7; value = "00.000";}
		: edit_box {key = eb14b; width = 7; value = "000.000";}
		: edit_box {key = eb14c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "15";}
		: edit_box {key = eb15; width = 7; value = "000.000";}
		: edit_box {key = eb15a; width = 7; value = "00.000";}
		: edit_box {key = eb15b; width = 7; value = "000.000";}
		: edit_box {key = eb15c; width = 7; value = "00.000";}
	}
 
	}
 
	ok_only;
	
}

Save this as afra1.dcl. Now view the dialog :

previewed dialog box

Did you notice how we where forced to include an "OK" button within the dialog? Don't worry though, we'll remove that later.

Ok, on to the next section. Open a new file and add this coding :

afra2 : dialog {
	label = "C" ;
 
	: column {
 
		: edit_box {key = "eb16"; label = "Base Level";
				edit_width = 12;value = "00.000";}
		: edit_box {key = "eb17"; label = "Top Level";
				edit_width = 12; value = "00.000";}
		: edit_box {key = "eb18"; label = "Horizontal Scale 1 :";
				edit_width = 12; value = "200";}
		: edit_box {key = "eb19"; label = "Vertical Scale 1 :";
				edit_width = 12; value = "50";}
		: edit_box {key = "eb20"; label = "Title";
				edit_width = 20;value = "Chainage";}
		: toggle {key = "tg1"; value = 1;
				label = "Description On/Off";}
	}
		
	ok_only;
}

Save this as afra2.dcl and then display it. It will look like this :

previewed dialog box

Now let's add the the other two text boxes :

afra2 : dialog {
	label = "C" ;
 
	: column {
 
		: edit_box {key = "eb16"; label = "Base Level";
				edit_width = 12;value = "00.000";}
		: edit_box {key = "eb17"; label = "Top Level";
				edit_width = 12; value = "00.000";}
		: edit_box {key = "eb18"; label = "Horizontal Scale 1 :";
				edit_width = 12; value = "200";}
		: edit_box {key = "eb19"; label = "Vertical Scale 1 :";
				edit_width = 12; value = "50";}
		: edit_box {key = "eb20"; label = "Title";
				edit_width = 20; value = "Chainage";}
		: toggle {key = "tg1"; value = 1;
				label = "Description On/Off";}
 
		: edit_box {key = "eb21"; label = "Path";
				edit_width = 20; value = "C:\\";}
		: edit_box {key = "eb22"; label = "File Name";
				edit_width = 20; value = "default";}
	}
		
	ok_only;
}

This will give us this :

previewed dialog box

Ok, time now to put this all together. This is what we need to do :

previewed dialog box

previewed dialog box

previewed dialog box

The following coding is a merged version of the three dialog boxes that you have just created:

afralisp : dialog {
	   label = "Cross Section Level Information" ;
 
	: row {
 
	: boxed_column {
 
	: row {
 
		: text {label = "No";}
		: text {label = "Chainage";}
		: text {label = "Existing";}
		: text {label = "Chainage";}
		: text {label = "Proposed";}
 
	}
 
	: row {
		: text {label = "  1";}
		: edit_box {key = eb1; width = 7; value = "000.000";}
		: edit_box {key = eb1a; width = 7; value = "00.000";}
		: edit_box {key = eb1b; width = 7; value = "000.000";}
		: edit_box {key = eb1c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  2";}
		: edit_box {key = eb2; width = 7; value = "000.000";}
		: edit_box {key = eb2a; width = 7; value = "00.000";}
		: edit_box {key = eb2b; width = 7; value = "000.000";}
		: edit_box {key = eb2c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  3";}
		: edit_box {key = eb3; width = 7; value = "000.000";}
		: edit_box {key = eb3a; width = 7; value = "00.000";}
		: edit_box {key = eb3b; width = 7; value = "000.000";}
		: edit_box {key = eb3c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  4";}
		: edit_box {key = eb4; width = 7; value = "000.000";}
		: edit_box {key = eb4a; width = 7; value = "00.000";}
		: edit_box {key = eb4b; width = 7; value = "000.000";}
		: edit_box {key = eb4c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  5";}
		: edit_box {key = eb5; width = 7; value = "000.000";}
		: edit_box {key = eb5a; width = 7; value = "00.000";}
		: edit_box {key = eb5b; width = 7; value = "000.000";}
		: edit_box {key = eb5c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  6";}
		: edit_box {key = eb6; width = 7; value = "000.000";}
		: edit_box {key = eb6a; width = 7; value = "00.000";}
		: edit_box {key = eb6b; width = 7; value = "000.000";}
		: edit_box {key = eb6c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  7";}
		: edit_box {key = eb7; width = 7; value = "000.000";}
		: edit_box {key = eb7a; width = 7; value = "00.000";}
		: edit_box {key = eb7b; width = 7; value = "000.000";}
		: edit_box {key = eb7c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  8";}
		: edit_box {key = eb8; width = 7; value = "000.000";}
		: edit_box {key = eb8a; width = 7; value = "00.000";}
		: edit_box {key = eb8b; width = 7; value = "000.000";}
		: edit_box {key = eb8c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "  9";}
		: edit_box {key = eb9; width = 7; value = "000.000";}
		: edit_box {key = eb9a; width = 7; value = "00.000";}
		: edit_box {key = eb9b; width = 7; value = "000.000";}
		: edit_box {key = eb9c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "10";}
		: edit_box {key = eb10; width = 7; value = "000.000";}
		: edit_box {key = eb10a; width = 7; value = "00.000";}
		: edit_box {key = eb10b; width = 7; value = "000.000";}
		: edit_box {key = eb10c; width = 7; value = "00.000";}
	}
	: row {
	: text {label = "11";}
		: edit_box {key = eb11; width = 7; value = "000.000";}
		: edit_box {key = eb11a; width = 7; value = "00.000";}
		: edit_box {key = eb11b; width = 7; value = "000.000";}
		: edit_box {key = eb11c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "12";}
		: edit_box {key = eb12; width = 7; value = "000.000";}
		: edit_box {key = eb12a; width = 7; value = "00.000";}
		: edit_box {key = eb12b; width = 7; value = "000.000";}
		: edit_box {key = eb12c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "13";}
		: edit_box {key = eb13; width = 7; value = "000.000";}
		: edit_box {key = eb13a; width = 7; value = "00.000";}
		: edit_box {key = eb13b; width = 7; value = "000.000";}
		: edit_box {key = eb13c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "14";}
		: edit_box {key = eb14; width = 7; value = "000.000";}
		: edit_box {key = eb14a; width = 7; value = "00.000";}
		: edit_box {key = eb14b; width = 7; value = "000.000";}
		: edit_box {key = eb14c; width = 7; value = "00.000";}
	}
	: row {
		: text {label = "15";}
		: edit_box {key = eb15; width = 7; value = "000.000";}
		: edit_box {key = eb15a; width = 7; value = "00.000";}
		: edit_box {key = eb15b; width = 7; value = "000.000";}
		: edit_box {key = eb15c; width = 7; value = "00.000";}
	}
 
	}
	
 
	: boxed_column {
 
		: edit_box {key = "eb16"; label = "Base Level";
				edit_width = 12;value = "00.000";}
		: edit_box {key = "eb17"; label = "Top Level";
				edit_width = 12; value = "00.000";}
		: edit_box {key = "eb18"; label = "Horizontal Scale 1 :";
				edit_width = 12; value = "200";}
		: edit_box {key = "eb19"; label = "Vertical Scale 1 :";
				edit_width = 12; value = "50";}
		: edit_box {key = "eb20"; label = "Title";
				edit_width = 20; value = "Chainage";}
		: toggle {key = "tg1"; value = 1;
				label = "Description On/Off";}
 
		: edit_box {key = "eb21"; label = "Path";
				edit_width = 20; value = "C:\\";}
		: edit_box {key = "eb22"; label = "File Name";
				edit_width = 20; value = "default";}
		
	: row {
 
	: button {label = "OK"; key = "accept";	mnemonic = "O";
			alignment = centered; width = 12; is_default = true;}
	: button {label = "Cancel"; key = "cancel";mnemonic = "C";
			alignment = centered; width = 12;}
 
	}
 
	: row {
 
	: button {label = "Save"; key = "save";
			mnemonic = "S";	alignment = centered; width = 12;}
	: button {label = "Load";key = "load";
			mnemonic = "L";	alignment = centered; width = 12;}
 
	}
 
	: row {
 
	: button {label = "Help..."; key = "help";
			mnemonic = "H"; alignment = centered; width = 12;}
	: button {label = "About..."; key = "About";
			mnemonic = "H";	alignment = centered; width = 12;}
 
	}
 
	}
 
	}
 
}

Save this as afralisp.dcl. Your merged dialog will now look like this :

previewed dialog box

Ok, I admit that it's not exactly the same but it's as close as dammit. You could, if you are that way inclined, mess around with boxed columns, boxed rows, and spacers, to get a closer match, and if you feel the need, then go for it! Me, I'm out of here to fetch myself a beer.

Want to download the source coding? Just click here.