sp  pAo @`! #@%`')+k1 3@5`79;=A C@E`GKMOQ S@U`WY[]_a c@e`gikmoqs@u`~y{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!gmoq!sAuawy{}o @`! #@%`')+k1 3@5`79;=A C@E`GKMOQ S@U`WY[]_a c@e`gikmoqs@u`~y{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   !Aa!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!gmoq!sAuawy{}DOC ׫BIGBOX LSTLIBOXTEST BASkrDIOXMH95PRGwNDIOXPRLMDOCkfDRAW_BTNLST` EAD ME f cCNLIB 170Gt IME INFh d . .. EXAMPLE DAT=EXAMPLE DSHBEXAMPLE LSTC)CHANGES NEWLREAD_ME 1ST-&STEPTHRUASC/t<STEPTHRUBAS?B%DIOX DOCO 16 Radio_a_1 Radio A 1 372 71 0 1 13 2 0 1 0 1 Radio_a_2 Radio A 2 372 98 0 1 13 2 0 1 0 1 Radio_a_3 Radio A 3 372 125 0 1 13 2 0 1 0 1 Radio_a_4 Radio A 4 372 152 0 1 13 2 0 1 0 1 Radio_b_1 Radio B 1 515 71 0 1 13 2 0 1 0 4 Radio_b_2 Radio B 2 515 98 0 1 13 2 0 1 0 4 Radio_b_3 Radio B 3 515 125 0 1 13 2 0 1 0 4 Radio_title RADIO BUTTONS 433 40 0 1 13 2 0 1 0 0 Toggle_1 Toggle 1 28 36 0 1 13 2 0 1 0 6 Toggle_2 Toggle 2 28 64 0 1 13 2 0 1 0 6 Exit_1 Exit 1 34 100 0 1 13 2 0 1 0 -6 Exit_2 Exit 2 34 127 0 1 13 2 0 1 0 -6 Okay Okay 258 42 0 1 13 2 0 4 0 -9 Cancel Cancel 249 82 0 1 13 2 0 1 0 -8 Toggle_title  TOGGLE 109 52 0 1 13 2 0 0 0 0 exit_title  EXIT 109 116 0 1 13 2 0 0 0 0 Example_box ox buttons, choose thier 'properties' and then generate the actual source code to implement the dialo13 deffill 1 0 0 0 pbox 227 15 317 105 deffill 1 0 0 0 pbox 13 11 187 144 deffill 1 0 0 0 pbox 349 13 610 173 deffill 1 2 4 0 pbox 353 17 605 168 deffill 1 2 4 0 pbox 16 15 183 140 deffill 1 2 2 0 pbox 231 18 313 102 ce layout and proccessing the data in a programmers application. Will DIOX accomplish this for you? In my opinion, it should. BUT YOUR OPINION IS WHAT DETERMINES IF DIOX WILL DO ANY GOOD FOR YOU, NOT MY OPINION! What that means is, if for any reason, any version of DIOX won't do a job you're using it for in any particular way, manner, or form, THAT IS NOT MY LIABILTY, IT IS YOURS. IF DIOX screws you up due to a bug, or any other shortcomming, then YOUR the one who got screwed up, not ME, because I'm not legaly responsible for your use of DIOX. I do feel morally responsible for DIOX itself, so I plan to to support it. Your use of it is up to you. In case Procedure Example_box (Preselect$,Postselect) Hidem Local Screen$,Temp$,Xm,Ym,Button$,Radio1_old$,Radio2_old$,Radio3_old$,Radio4_old$,Radio5_old$,Radio1_new$,Radio2_new$,Radio3_new$,Radio4_new$,Radio5_new$,Stat_exit Sget Screen$ Local Toggle_1_stat$, Toggle_1_stat Local Toggle_2_stat$, Toggle_2_stat Local Exit_1_stat$, Exit_1_stat Local Exit_2_stat$, Exit_2_stat @Drawshapes_Example_box @Radio_title(0) @Toggle_title(0) @exit_title(0) If Instr(Preselect$,"(Radio_a_1)")>0 @Radio_a_1(-1) Let Radio1_old$="Radio_a_1" Else @Radio_a_1(0) Endif If Instr(Preselect$,"(Radio_a_2)")>0 @Radio_a_2(-1) Let Radio1_old$="Radio_a_2" Else @Radio_a_2(0) Endif If Instr(Preselect$,"(Radio_a_3)")>0 @Radio_a_3(-1) Let Radio1_old$="Radio_a_3" Else @Radio_a_3(0) Endif If Instr(Preselect$,"(Radio_a_4)")>0 @Radio_a_4(-1) Let Radio1_old$="Radio_a_4" Else @Radio_a_4(0) Endif If Instr(Preselect$,"(Radio_b_1)")>0 @Radio_b_1(-1) Let Radio4_old$="Radio_b_1" Else @Radio_b_1(0) Endif If Instr(Preselect$,"(Radio_b_2)")>0 @Radio_b_2(-1) Let Radio4_old$="Radio_b_2" Else @Radio_b_2(0) Endif If Instr(Preselect$,"(Radio_b_3)")>0 @Radio_b_3(-1) Let Radio4_old$="Radio_b_3" Else @Radio_b_3(0) Endif If Instr(Preselect$,"(Toggle_1)")>0 @Toggle_1(-1) Let Toggle_1_stat=true Let Toggle_1_stat$="Toggle_1" Else @Toggle_1(0) Endif If Instr(Preselect$,"(Toggle_2)")>0 @Toggle_2(-1) Let Toggle_2_stat=true Let Toggle_2_stat$="Toggle_2" Else @Toggle_2(0) Endif @Exit_1(0) @Exit_2(0) @Cancel(0) @Okay(0) Showm Do If Inkey$=Chr$(13) Default=True Else Default=False Endif If Mousek=1 Mouse Xm,Ym,Void @Find_button_Example_box (Xm,Ym,*Button$) If Instr("(Radio_a_1)(Radio_a_2)(Radio_a_3)(Radio_a_4)","("+Button$+")")>0 @Radio1_Example_box (Button$,Radio1_old$,*Radio1_new$) Radio1_old$=Radio1_new$ Endif If Instr("(Radio_b_1)(Radio_b_2)(Radio_b_3)","("+Button$+")")>0 @Radio4_Example_box (Button$,Radio4_old$,*Radio4_new$) Radio4_old$=Radio4_new$ Endif If Button$="Toggle_1" If Toggle_1_stat @Toggle_1(0) Let Toggle_1_stat=False Let Toggle_1_stat$="" Else @Toggle_1(-1) Let Toggle_1_stat=True Let Toggle_1_stat$="Toggle_1" Endif Endif If Button$="Toggle_2" If Toggle_2_stat @Toggle_2(0) Let Toggle_2_stat=False Let Toggle_2_stat$="" Else @Toggle_2(-1) Let Toggle_2_stat=True Let Toggle_2_stat$="Toggle_2" Endif Endif If Button$="Exit_1" If Exit_1_stat @Exit_1(0) Let Exit_1_stat=False Let Exit_1_stat$="" Let Stat_exit=False Else @Exit_1(-1) Let Exit_1_stat=True Let Exit_1_stat$="Exit_1" Let Stat_exit=True Endif Endif If Button$="Exit_2" If Exit_2_stat @Exit_2(0) Let Exit_2_stat=False Let Exit_2_stat$="" Let Stat_exit=False Else @Exit_2(-1) Let Exit_2_stat=True Let Exit_2_stat$="Exit_2" Let Stat_exit=True Endif Endif Endif Exit if (Button$="Okay") Or (Button$="Cancel") Or Default Exit If (Button$="Exit_1") Exit If (Button$="Exit_2") Pause 4 Loop If Stat_exit Temp$=Temp$+"("+Radio1_old$+")" Temp$=Temp$+"("+Radio4_old$+")" Temp$=Temp$+"("+Toggle_1_stat$+")" Temp$=Temp$+"("+Toggle_2_stat$+")" Temp$=Temp$+"("+Exit_1_stat$+")" Temp$=Temp$+"("+Exit_2_stat$+")" *Postselect=Temp$ Endif Do @Find_button_Example_box (Xm,Ym,*Button$) If Button$="Okay" Or Default @Okay(-1) Stat_exit=True Temp$=Temp$+"("+Radio1_old$+")" Temp$=Temp$+"("+Radio4_old$+")" Temp$=Temp$+"("+Toggle_1_stat$+")" Temp$=Temp$+"("+Toggle_2_stat$+")" Temp$=Temp$+"("+Exit_1_stat$+")" Temp$=Temp$+"("+Exit_2_stat$+")" *Postselect=Temp$ Endif If Button$="Cancel" @Cancel(-1) Stat_exit=True *Postselect=Preselect$ Endif Exit if Stat_exit Loop Pause 7 Sput Screen$ Return Procedure Radio1_Example_box (Rbutton$,Old_stat$,New_stat) If Old_stat$="Radio_a_1" @Radio_a_1(0) Endif If Old_stat$="Radio_a_2" @Radio_a_2(0) Endif If Old_stat$="Radio_a_3" @Radio_a_3(0) Endif If Old_stat$="Radio_a_4" @Radio_a_4(0) Endif If Rbutton$="Radio_a_1" @Radio_a_1(-1) *New_stat="Radio_a_1" Endif If Rbutton$="Radio_a_2" @Radio_a_2(-1) *New_stat="Radio_a_2" Endif If Rbutton$="Radio_a_3" @Radio_a_3(-1) *New_stat="Radio_a_3" Endif If Rbutton$="Radio_a_4" @Radio_a_4(-1) *New_stat="Radio_a_4" Endif Return Procedure Radio4_Example_box (Rbutton$,Old_stat$,New_stat) If Old_stat$="Radio_b_1" @Radio_b_1(0) Endif If Old_stat$="Radio_b_2" @Radio_b_2(0) Endif If Old_stat$="Radio_b_3" @Radio_b_3(0) Endif If Rbutton$="Radio_b_1" @Radio_b_1(-1) *New_stat="Radio_b_1" Endif If Rbutton$="Radio_b_2" @Radio_b_2(-1) *New_stat="Radio_b_2" Endif If Rbutton$="Radio_b_3" @Radio_b_3(-1) *New_stat="Radio_b_3" Endif Return Procedure Drawshapes_Example_box Deffill 1,0,0 Pbox 227,15/(2/xbios(4)),317,105/(2/Xbios(4)) Deffill 1,0,0 Pbox 13,11/(2/xbios(4)),187,144/(2/Xbios(4)) Deffill 1,0,0 Pbox 349,13/(2/xbios(4)),610,173/(2/Xbios(4)) Deffill 1,2,4 Pbox 353,17/(2/xbios(4)),605,168/(2/Xbios(4)) Deffill 1,2,4 Pbox 16,15/(2/xbios(4)),183,140/(2/Xbios(4)) Deffill 1,2,2 Pbox 231,18/(2/xbios(4)),313,102/(2/Xbios(4)) Return Procedure Radio_a_1(Selected) @Draw_text_in_box("Radio A 1",372,71/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radio_a_2(Selected) @Draw_text_in_box("Radio A 2",372,98/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radio_a_3(Selected) @Draw_text_in_box("Radio A 3",372,125/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radio_a_4(Selected) @Draw_text_in_box("Radio A 4",372,152/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radio_b_1(Selected) @Draw_text_in_box("Radio B 1",515,71/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radio_b_2(Selected) @Draw_text_in_box("Radio B 2",515,98/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radio_b_3(Selected) @Draw_text_in_box("Radio B 3",515,125/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radio_title(Selected) @Draw_text_in_box("RADIO BUTTONS",433,40/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Toggle_1(Selected) @Draw_text_in_box("Toggle 1",28,36/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Toggle_2(Selected) @Draw_text_in_box("Toggle 2",28,64/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Exit_1(Selected) @Draw_text_in_box("Exit 1",34,100/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Exit_2(Selected) @Draw_text_in_box("Exit 2",34,127/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Okay(Selected) @Draw_text_in_box("Okay",258,42/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),4/(2/Xbios(4)),Selected) Return Procedure Cancel(Selected) @Draw_text_in_box("Cancel",249,82/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Toggle_title(Selected) @Draw_text_in_box(" TOGGLE",109,52/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),0/(2/Xbios(4)),Selected) Return Procedure exit_title(Selected) @Draw_text_in_box(" EXIT",109,116/(2/xbios(4)),0,1,1,2,0/(2/Xbios(4)),0/(2/Xbios(4)),Selected) Return Procedure Find_button_Example_box (X_mouse,Y_mouse,Button_selected) If (X_mouse>369) And (X_mouse<447) And (Y_mouse>57/(2/Xbios(4))) And (Y_mouse<75/(2/Xbios(4))) *Button_selected="Radio_a_1" Goto Found_button_Example_box Endif If (X_mouse>369) And (X_mouse<447) And (Y_mouse>84/(2/Xbios(4))) And (Y_mouse<102/(2/Xbios(4))) *Button_selected="Radio_a_2" Goto Found_button_Example_box Endif If (X_mouse>369) And (X_mouse<447) And (Y_mouse>111/(2/Xbios(4))) And (Y_mouse<129/(2/Xbios(4))) *Button_selected="Radio_a_3" Goto Found_button_Example_box Endif If (X_mouse>369) And (X_mouse<447) And (Y_mouse>138/(2/Xbios(4))) And (Y_mouse<156/(2/Xbios(4))) *Button_selected="Radio_a_4" Goto Found_button_Example_box Endif If (X_mouse>512) And (X_mouse<590) And (Y_mouse>57/(2/Xbios(4))) And (Y_mouse<75/(2/Xbios(4))) *Button_selected="Radio_b_1" Goto Found_button_Example_box Endif If (X_mouse>512) And (X_mouse<590) And (Y_mouse>84/(2/Xbios(4))) And (Y_mouse<102/(2/Xbios(4))) *Button_selected="Radio_b_2" Goto Found_button_Example_box Endif If (X_mouse>512) And (X_mouse<590) And (Y_mouse>111/(2/Xbios(4))) And (Y_mouse<129/(2/Xbios(4))) *Button_selected="Radio_b_3" Goto Found_button_Example_box Endif If (X_mouse>25) And (X_mouse<95) And (Y_mouse>22/(2/Xbios(4))) And (Y_mouse<40/(2/Xbios(4))) *Button_selected="Toggle_1" Goto Found_button_Example_box Endif If (X_mouse>25) And (X_mouse<95) And (Y_mouse>50/(2/Xbios(4))) And (Y_mouse<68/(2/Xbios(4))) *Button_selected="Toggle_2" Goto Found_button_Example_box Endif If (X_mouse>31) And (X_mouse<85) And (Y_mouse>86/(2/Xbios(4))) And (Y_mouse<104/(2/Xbios(4))) *Button_selected="Exit_1" Goto Found_button_Example_box Endif If (X_mouse>31) And (X_mouse<85) And (Y_mouse>113/(2/Xbios(4))) And (Y_mouse<131/(2/Xbios(4))) *Button_selected="Exit_2" Goto Found_button_Example_box Endif If (X_mouse>252) And (X_mouse<296) And (Y_mouse>25/(2/Xbios(4))) And (Y_mouse<49/(2/Xbios(4))) *Button_selected="Okay" Goto Found_button_Example_box Endif If (X_mouse>246) And (X_mouse<300) And (Y_mouse>68/(2/Xbios(4))) And (Y_mouse<86/(2/Xbios(4))) *Button_selected="Cancel" Goto Found_button_Example_box Endif *Button_selected=" " Found_button_Example_box: Return but I don't know what would happen if you put in two defaults. Thus far, I have explained how to create a button, put text into it, make its' border, select size, style, and color of text, reverse a DEAD, CANCEL, or EXIT button from DIOX, and assign a button one of six attributes and what those attributes were. Now you'd probably want more than one button in your box. So, simply select CREATE and start up another button. NEVER USE THE SAME NAME FOR DIFFERENT BUTTONS! DIOX WON'T CHECK FOR THIS!CAHNGES TO VERSION 0.95 FROM 0.90 .......... This is DIOX v0.95. I have enhanced it considerably over 0.90! One thing I had to do was get rid of the LOW RES in this because DIOX was getting HUGE! I will be comming out with a LO-RES version of DIOX within a few days of this version. Therefore, THIS VERSION, DIOXMH95.PRG will only work in MEDIUM and HIGH resolutions! Changes over the last version are as follows: GREATLY improved shape (box) manipulation. Now a box can be created and then placed UNDER previous boxes. ROUNDED and SEE THRU buttons. SEE THRU is probably the most usefull addition. It allows several lines of text (dead buttons) to be placed in one single region. Simply make spaces if you want just an empty "selectable" frame. When reversed, anything under it is inverted. Nifty. SAVE OPTIONS are now added. You can now choose to save only the raw data, or just generate a LST file, or both. Reports can be sent to printer on what buttons are in your box, that way you won't forget what the names are. Restoration of the original screen after the dialog box exits is now an option. Even button delay can be selected. Error checking for duplicate names during creation or renaming a button now exists. DIOX won't allow mistakes here! Also, the forbidin double quote (") character is now checked for and rejected with an alert box during string entry. You can now watch the whole show as your dialog box is being written. DIOX now writes source code to screen as well as disk, AND its' screen output tells you about each procedure being generated. Also, I did some minor bug hunting here and there. It's getting difficult to find any more bugs, so ....... Unless a catasrophic bug is discovered in this vesion of DIOX, I will not be comming out with a new version until 1.0, because I will be busy adding editables to it. Look for it in about a month or two. ....... Paul Huntington and RENAME( explained below ) will print the buttons' DIOX version 0.95 Copyright 1987 by Paul Huntington ---------------- A complete DIOX system should have the following ... DIOXMH95.PRG ---------> The program itself (med/hi res, v0.95) DIOX.DOC -------------> This documentation DRAW_BTN.LST ----------> Procedure to be merged BOXTEST.BAS ----------> The dialog box tester Plus an example ------------------------------------------ EXAMPLE.DAT/.DSH -------> Exmples to create with EXAMPLE.LST -----------> Example dialog box (Part 1) INTRODUCTION: --------------------------------------------------------- The purpose of DIOX is to allow the GFA BASIC programmer to quickly and easily create and edit dialog boxes. It will do this by allowing the programmer to visually place and edit the various dialog box buttons, choose thier 'properties' and then generate the actual source code to implement the dialog box. My goal is to eliminate the chore of writing user interfaces so that programmers can concentrate on writting JUST thier applications. No time should be spent on user interface mechanics, instead most of the time should be spent on user interface layout and proccessing the data in a programmers application. Will DIOX accomplish this for you? In my opinion, it should. BUT YOUR OPINION IS WHAT DETERMINES IF DIOX WILL DO ANY GOOD FOR YOU, NOT MY OPINION! What that means is, if for any reason, any version of DIOX won't do a job you're using it for in any particular way, manner, or form, THAT IS NOT MY LIABILTY, IT IS YOURS. IF DIOX screws you up due to a bug, or any other shortcomming, then YOUR the one who got screwed up, not ME, because I'm not legaly responsible for your use of DIOX. I do feel morally responsible for DIOX itself, so I plan to to support it. Your use of it is up to you. In case you didn't recognize what I've just said, it is called a 'WARRANTY DISCLAIMER', only this is in plain English. I've taken every step I know to insure that DIOX is reliable and bug free, but nothing is ever perfect. Version 0.95 has everything I wanted to add EXCEPT EDITABLE BUTTONS. DIOX v1.0 will have editable buttons! This present version will allow you to graphically layout, edit, save, and load an entire dialog box at a time. You can have RADIO, TOGGLE, and EXIT buttons in your box. You can also have one ENTER and one CANCEL button for each box. More on those two shortly. DIOX will work in ALL resolutions. FILES FOR DIOX v 0.95 : DIOX.PRG is DIOX itself. DIOX v 0.95 is 238,508 bytes of pure, 100%, GFA BASIC, compiled with version 1.8 (US) GFA Compiler. The source code will be uploaded to various BBSs if there is a whopping demand for it. DRAW_BTN.LST is to be merged in with your GFA program. You need not know how it works (read the TEST_BOX.BAS listing if you're curious about it). The DRAW_BTN.LST file is a procedure which draws a line of text centered in an optional box frame. ALL DIOX DIALOG BOXES CALL THIS! Just merge it and forget it. The DRAW_BTN.LST file with DIOX v0.95 is DIFFERENT from the one with v 0.90. USE v0.95s' instead of 0.90s'. It will be compatible with any DIOX v0.90 buttons. DIOX.DOC is, of course, this documentation to DIOX. It is divided into THREE parts : 1) Introduction 2) "EDITING" tutorial to get you quickly into editing dialog boxes 3) "INTERFACING" explains how to interface your new dialog box into your program. BOXTEST.BAS is a short program to test any dialog box that you make. Merge in your dialog box ".LST" file that you generated with DIOX, rename the 'Yourbox' in the listing on one of the first few lines to your own boxes' name, then run it. (PART 2) EDITING : --------------------------------------------------------- You start out with DIOX by selecting 'Create'(Unless you have a file to load off disk). The program wants a procedure name for the button. Use up to 32 characters of the type that would normally be allowed in a GFA BASIC PROCEDURE NAME. That means only uppercase-alpha, lowercase-alpha, digits 0-9, and the underscore " _ " character. If an ENTRY ERROR is made an alert box will come up. If this happens, clicking 'OK' will send you back to edit your response, and clicking 'Cancel' will abort the creation. When finished entering the ITEMS NAME, you may wish to jot it down if you think you can't remember it. This will be important to you as you use it in your program, as this is the name that will be passed back to you if the button is clicked on during your programs' run. Next you may want to select STRING under the TEXT heading. This allows you to type in the line of characters that will be in the button . NOTE: DON'T USE THE DOUBLE QUOTE CHARACTER (")! DIOX will check for this error. You may use any of the non-keyboard characters by typing CTRL-A, the ASCII code of the character you want (in your GFA manual), and a cursor key. The special character you want should be visible then. For instance, to get an UP ARROW symbol, type: CTRL-A, 1, then any CURSOR KEY. You are allowed 70 characters for medium or high res, 35 for low res. To create a border simply press '+' and keep pressing it until the border is as thick as you want. If you want to reduce the border thickness, press '-' until the border is as thin as you want it. You can keep doing this until the border is gone. Your buttons don't HAVE to have borders. If you are making an AUTORES box and are doing it from MONO, you may wish to make a default buttons' thickness a little thicker than normal, as auto res cuts thickness in half on medium res from its' original MONO size. That's so it can squeeze evrything onto a medium res screen. To increase the size of the box area, press CURSOR UP for increased vertical size and press cursor right for increased horizontal size. CURSOR DOWN decreases vertical border size and CURSOR LEFT reduces horizontal border size. To actually move the button, place the arrow on top of the button, click the RIGHT MOUSE BUTTON, and move the mouse. Note that the arrow disappears. This picks up the button so that it moves with your mouse movements. This also ACTIVATES the button. ACTIVE means that the button is now the present button being worked on, and so whatever text, border, or attribute changes you make will be made to the ACTIVE button. To lay down the button, click the LEFT MOUSE BUTTON. You may need to click it twice, as GFA BASIC seems to miss a click occasionaly, but usually once is enough. The +, - and cursor keys will work either when the button your working on is being moved or when the button is layed down. Now you know how to CREATE your first button, make its' TEXT, create its' BORDER, MOVE and PLACE it, and ACTIVATE it for further editing at any time. You can also change its' text SYTLE, SIZE (not in AUTORES), COLOR (not in AUTORES or MONO), choose weather you want to have it drawn in reverse or not by using the SELECTED option, (RADIO and TOGGLE buttons will not be effected by this in the final, generated code. You pre-set these by a PROCEDURE call, more on that later), and choose what ATTRIBUTE it has. ATTRIBUTES are what the buttons do when they are selected. Let's talk about ATTRIBUTES. DIOX has SIX ATTRIBUTES in its' Attr menu strip. RADIO, TOGGLE, EXIT, DEAD, ENTER, and CANCEL. RADIO: RADIO is when you have a group of buttons, but only ONE button can be selected at a time. A "set RS 232 port" dialog box prbably uses a group of radio boxes to set the baud rate, as you can only choose a single baud rate out of several choices. DIOX allows FIVE distinct groups of radio boxes. When you want a button to be a radio button, just select the RADIO option. A dialog box will appear with five buttons labeled "Group 1", "Group 2", "Group 3", "Group 4", and "Group 5". It also has an OK and a cancel button. Select one of those groups and then hit Return or click on OK. Cancel simply aborts any changes. Now, when you see the Attr strip scroll down again, you'll see RADIO's been checked. The buttons' attribute is now set. TOGGLE: Or, maybe you'd rather have it as a TOGGLE button instead. Simply select the TOGGLE option. It will be checked when selected. A toggle button will simply reverse its' state when it's been selected. So if the button is in a turned-off state, it will turn on (reverse) when clicked on. If it is in a turned-on state, it will be turned off when selected. RADIO and TOGGLE are the only two button types that are pre-selectable from your eventual program (via what variable you pass to it in your procedure call- more on that later), they are NOT presetable from DIOX even though you can reverse them there. EXIT: EXIT buttons are also available. Again, just click on that option to make your button an exit button. An exit button will cause an exit from the dialog box when selected. First, though, it will reverse for a moment, just to look like it has been selected. DEAD: DEAD is the default when DIOX first starts up. A dead button does absolutly nothing when selected. It is for a display only. Most of the text in the help screens of DIOX are dead buttons. ENTER: A button given the ENTER attribute is the only DEFAULT button DIOX gives you. By DEAFULT I mean that it will be the button selected when RETURN is pressed. It can also be selected in the usual way with the mouse. When an enter button in your dialog box is selected, the dialog box is exited with the newly selected settings of the other buttons passed back to the main program. Don't worry if you don't understand 'passed back', I'll explain that shortly. CANCEL: A CANCEL button, like ENTER and EXIT, will cause an exit from the routine if it is selected in your programs' dialog box. However, a CANCEL button will cause any of the new button settings to be disregarded and will pass back the old button settings you went in with. Another words, it will cancel any changes made to the dialog boxes' settings. Niether CANCEL or ENTER will ever pass back thier own names. TOGGLE, RADIO, and EXIT buttons' names ARE passed back if they were selected. In summary, The RADIO attribute will cause only one out of a group to be selected. TOGGLE will always reverse the button when selected. EXIT will cause an exit from the dialog box with all new selections passed back. DEAD will do nothing. ENTER will cause an exit if either the return key is hit or it is selected by mouse, passing back all the new selections. CANCEL will exit the dialog box BUT passing back only the PRE-SET values you went in with, canceling all new selections. A tip on ENTER buttons. Generaly, you'd want to make thier borders thicker, as it is generally understood that thicker borders constitute default. Another note: You should use only ONE enter button per dialog box. DIOX will not restrict you to this, but I don't know what would happen if you put in two defaults. Thus far, I have explained how to create a button, put text into it, make its' border, select size, style, and color of text, reverse a DEAD, CANCEL, or EXIT button from DIOX, and assign a button one of six attributes and what those attributes were. Now you'd probably want more than one button in your box. So, simply select CREATE and start up another button. NEVER USE THE SAME NAME FOR DIFFERENT BUTTONS! DIOX will check for this. Since there was a previously active button, the name of the last button activated will be the default text in your edit space. You may only wish to change one character if you have a system of simular buttons, such names as Color_a, Color_b, or you can totaly re-enter a whole new name. If you enter the same name that was there before, NO NEW BUTTON IS CREATED. The creation is just aborted. ALL of the new buttons' properties default to the properties of the LAST ACTIVE BUTTON. You have to change those properties if you want a different looking and/or acting button. Changing an activated buttons' properties is just a matter of selecting the appropriate options, as before. Don't worry, you won't lose the properties of the last button, it was stored away when you made a new button and can be recalled by activating that button again. When all buttons, except the first, are created, they will already be picked up by your mouse. That is so they won't suddenly pop into existance on some other button. Simply take them to where you want to put them, and left- click the mouse to put it down. With more than one button on your screen, you must have a method of directing your text, style, attribute, etc changes to just the one button you're working on. This means you must ACTIVATE the button. You do this by placing the mouse arrow over the button. Then you can either click the right mouse button, which will always mean moving your button at least a few pixels, or you just can press return and not disturb its' position on the screen. Doing either one of these things says to DIOX " I want to work on THIS button now ". When you ACTIVATE a button all of that buttons' characteristics are now displayed in all the menus. The options of CREATE and RENAME( explained below ) will print the buttons' name out when they are selected. The TEXT and ATTR menu strip will display checks at all places which were last selected for THAT button. String option will print the buttons' text out as default when selected. The radios' dialog box will display a radio buttons' group number. This is how you go about getting a status report on a particular button you want to check. Just activate it, and look at all the menus and thier options. They all reflect the buttons' status. I had to use seperate drop down menus to display and set all the settings of a button ( except radio grouping ) because, guess what, I had no efficient method of making dialog boxes. DIOX 0.95 may be 'gutted' and re-fit with a single dialog box for making most of those drop-down menu options for version 1.0. I now have a dialog box editor to do that with. To DELETE a button, ACTIVATE the offending button and press DELETE. The PRESENTLY ACTIVE BUTTON will be gone forever. If you kept pressing DELETE after that, the previously created button from the one just deleted will be, you guessed it, deleted. It keeps going back to the first button. RENAME is another option you may need. If you wanted to, you could just change the name of a button without creating a new one by selecting this option. Also, two new additions to v0.95 are ROUNDED and SEE THRU options. Rounded will cause the buttons' border to have rounded edges. See thru will cause the buttons' background to be transparent. When reversed, anything under it will be reversed. This is usefull for puttings several lines of text under a single button. I am planning on putting a clip-art option onto DIOX, so pictures can be under this button as well as text. What have you learned? By now you should know .... How to CREATE your first button How to make TEXT for your button How to change the STYLE, SIZE, and COLOR of text How to edit the text in your button How to add a border line around your button How to make the border line THICKER or THINNER How to make the border AREA larger or smaller How to assign an ATTRIBUTE to a button How to MOVE your button and PLACE IT somewhere How to CREATE MORE buttons How to ACTIVATE any particular button How to change the SETTINGS of any button, any time How to RENAME a button How to DELETE a button How to make ROUNDED buttons How to make TRANSPARENT buttons You now know how to make, edit, and manipulate buttons, I hope. If not, PLAY-PLAY-PLAY with DIOX! Look at the example given in this text. READ the HELP screens in DIOX (press HELP). OKAY, let's move on to some artistic detailing. You've completed all your buttons and laid them down nicely right next to each other in neat little rows (unless your into 'new-wave' dialog boxes). Now you may wish to enclose your buttons in a box, to graphically seperate them from the rest of the screen. Just select the BOX option. This is different from the older v0.90 version of DIOX. Now you select a fill pattern for the box first. It can be any one of 36 patterns, solid white, or transparent (a frame). Click on this with the left mouse button. The box is now started by placing the cross on a point where one corner of the square is to go. Then click the RIGHT mouse button. Move the mouse around until the frame is the desired shape. Click the LEFT mouse button to lay down the square. To delete any shape, press UNDO and the last shape drawn (not nessesarily the last created because of the bottom option) will be deleted. Let's again review what should now have been learned. Do you know how to use DIOX to do all kinds of things to all kinds of buttons, including making a button go away? I explained how up there. How about making shapes to enhance the appearance of your box? You know how to make shapes go away too, right? GOOD! Now we move on to our final destination. GENERATING THE CODE THAT WILL DO ALL THIS! The SAVE option starts all this 'program generating' up. When all is well with what you've laid out, you'll want to select SAVE. The first thing that pops up is a request to enter the dialog boxes name. Again, same as the BUTTONS' name, a procedure name. IT MUST BE DIFFERENT FROM ANY OTHER NAME USED IN YOUR BOX. Same as the BUTTONS' NAME rules. It will be checked for uniqueness by DIOX. This is the name you will use to call your box from your procedure. Once you've selected the name and pressed return, a SAVE OPTIONS menu will come up. You can choose to save only the DIALOG BOX DATA, or to just generate a LST file (your dialog box routine), or BOTH. Another option is to make your dialog box RESTORE THE SCREEN AFTER EXIT. A REPORT can be sent to the printer. This will list the dialog boxes' procedure name, and each individual buttons' name, text line, and attribute. I havn't put in a printer check routine, so have everything ready for this. You can get JUST a report without saving by selecting this then selecting cancel at the forthcomming file selector box. The last item is the BUTTON DELAY. This controls how fast the dialog box reacts to your clicking of the mouse button. It defaults to 4. 0 is fastest, 9 is slowest. Select OKAY when done. Now a file selector box will appear. It wants a name to save your .LST file which is the code for your dialog box. Make sure you type in that .LST extender, as DIOX will not add it. When you press return, DIOX starts churning away. The new 0.95 version will now write code to the screen as well as disk, so you see it as it's being written. DIOX will also comment on every new procedure as it creates it. It can be a show. It takes a few seconds to a few minutes to generate a dialog box routine, depending on its' complexity. When the thing stops, you'll know it, as the picture redraws itself and the bee has turned back into an arrow. WARNING! WARNING! I have NOT used traps in DIOX. If you forget to place a disk into the drive or some other catastrophe occours, THE PROGRAM WILL TERMINATE! And your work along with it. Make sure all is well BEFORE using DIOX. OH, before I forget, two other files are laid down besides your .LST file. A .DAT file is the raw data on the dialog box and each of the buttons. A .DSH file is the data on the shapes in your box. THESE ARE WHAT IS LOADED BACK IN FOR FURTHER EDITING. So, now that we have generated a routine that is supposed to implement your design, let's not go right into testing it. First let's cover our last feature, LOADING. To LOAD in a previously SAVEd dialog box, hit ESC. This will CLEAR and RESTART the whole program. Now, select the LOAD option. The file selector will come up with the name of the .DAT files on your directory. It wants to load the .DAT and .DSH files that were previously laid down from SAVE. It doesn't care about the .LST file. Once loaded, your started with the first, created button as your active button. Your ready to continue editing using all the above described features. NOTE! If you load in a file created with DIOX 0.90 into DIOX 0.95, and it had FILL patterns in it, they will not show up. Erase all shapes and start them over again with v0.95s superior method. Remeber, the old fills won't show up, so when deleting, hit UNDO twice. You won't hurt anything by UNDOing too many times. I have kept the BUTTON compatibilty with 0.90 flawless, despite the two new button features (rounded and see thru). (PART 3) INTERFACING ------------------------------------------------------- So, I assume you have a generated .LST file you'd like to quickly put into a program and test. The program called TEST_BOX.BAS will to just that. It has instructions in its' listing for merging it in and testing it. I'll explain it here: Step 1) MERGE your dialog box program into TEST_BOX.BAS either where the listing says you should or in the end of it. Just be sure you don't merge it in the middle of the only other procedure in there, the DRAW_TEXT_IN_BOX procedure. GFA BASIC will not allow procedures within procedures. Step 2) RENAME the Procedure call, @Your_box_name, to your boxes actual name. It is on the first few lines of TEST_BOX.BAS. Step 3) RUN IT! Notice, everytime you select a box you made into an exit box, an enter box, or a cancel box, your box disappears and some names appear inside parentheses, along with other parentheses which are empty. Do some of those names look familiar? Those are the names you assigned to those buttons. When ever a TOGGLE, RADIO, or EXIT box is selected, thier names are passed back between parentheses in one string. Now hit a key. Your dialog box will come back, with the previously selected toggle and radio boxes now pre-selected. Your previous choices were 'echoed' back so you could see that all aspects of the dialog box work. To stop, just press CTRL-SHIFT-ATL as usual. You have now tested your box. Don't bother saving what you've got here. Your goal is to merge it into YOUR program, not the test shell. Now that you've tested it successfully (I hope), let's talk about INTERFACING it to your program. Figure 1 illustrates a flow chart of how the box is linked to your program and a little of how your box will work. The statement you must make to call your dialog box is a simple, one line affair. NOTE: YOU must clear the screen before AND after the box is drawn. Maybe save a screen temporarily using SGET and then doing a CLS. Call your box. When it's finished, use SPUT. I have elected NOT to do this from within a DIOX procedure as it would cut down on the ability of more advanced effects, like thumbwheels perhaps. DIOXS' DIALOG BOXES WILL NOT ERASE ANYTHING. THEY DRAW IT AND LEAVE IT! The before and after of the dailog box is up to you. You make a GOSUB call (I prefer @) with only two strings in the parameter list (parameter list is the part in the parentheses next to the GOSUB statement. They are seperated by a comma. See GFA MANUAL for more info.) The first string is the PRESELECT. This string YOU provide. It can be an empty string if you like, a "" can be put there. If this is the case, none of the toggle or radio buttons will be preselected. Or, if you choose to preselect, simply take the name of the toggle or radio button you typed in when you CREATED it from DIOX, surround it with parentheses, (Like_this), and attatch it to the string. The toggle and radio buttons you specified will then start out in a selected state for default selections. You COULD specify more than one radio button per group be preselected, but then that radio group acts 'wierd', so you'd waSome comments: This is mentioned in the main docs, but I'll have to reiterate. Three things can give you problems with DIOX because I have not yet added the error checking to insure you won't do them. FIRST is the fact that all buttons' names, as well as the final dialog boxes' name, must all be DIFFERENT from one another by at least ONE character. These are going to be used as procedure names and GFA won't allow more than one procedure per name. SECOND is when entering a string of text for a button, DON'T USE THE DOUBLE QUOTE ("). Use a single quote (') instead. A string of characters representing the buttons text is surrounded by double quotes in the final coding, and your double quotes will mess up the final product when you try to run it. THIRD, always make sure that the DISK you are saving to is READY TO WORK! A problem here will cause DIOX to crash. Error trapping will be added later. An additional note: BUTTON LIMIT is 150 buttons for DIOX to work on at once. That should be MORE than enough! Let's step through an example on how to construct a dialog box. First load up the TEST_BOX.BAS file. We're going to see an example which I have previously done. We are going to see how it works when in action. We want to this this first because you are going to build up an identical box, and you probably want to see what it SUPPOSED to do and look like. Now that you are in the TEST_BOX.BAS program, merge in the EXAMPLE.LST file into an appropriate spot. A few line from the top of the program you'll notice a statement @Your_box_name (Preselect$,*Postselect$) rename that statement to @Exmple_box (Preselect$,*Postselect$) and now run the program and the dialog box should appear in the upper half of the screen. This is a self-adjusting AutoRes dialog box. It will appear the same in mono or medium res color. Now twidle with everything and see what it does. Note that when the EXIT buttons, Cancel button, and Okay button is clicked on, the box exits as your choices are printed out. Ok, now you know what you've got to make. So let's do it. Load and run DIOX.PRG. Press return if you've already read the title screen. In medium or High res, an alert box will come up and ask if you want your box to automatically adjust to medium and hi res. Select YES. Now, select the load option and let's take a look at our initial example. Load in the EXAMPLE.DAT file. If your operating with a color monitor in medium resolution, look at what happens to this dialog box! It is not the same thing as you saw on the demo! Although everything fits onto the screen, it covers both halves. That is because AutoRes only effects the LST file which DIOX generates, NOT the actual data of the .DAT or .DSH files nor will its' draw routines adjust more than the SIZE of the fonts. No matter. It still is editable. But we don't want to edit this. We want to MAKE this. So we will start over by pressing ESCAPE. Then press return. Then select YES to AutoRes again. Now, let's CREATE our first button. Select the create option from underneath the 'Item' drop down menu. It asks for an ITEMS procedure name. That should actually be BUTTONS procedure name, but DIOX is out already, so I'll correct that next time. So now we enter "RADIO_A_1" and return. Nothing should appear to happen on the screen. We need to make the buttons' TEXT, so select the STRING option from the 'Text' drop down. Now it wants a String of characters for your button. Enter "Radio A 1" and return. Now you should see a line of text on the screen as "Radio A 1". You've just typed it in. Pick up the button and move it twoards the right side of the screen. You do that by placing the mouse arrow over the button. Press the RIGHT mouse button for a moment. Now the arrow will be gone and the button moves with the mouse. place it where you previously saw the same "Radio A 1" button in the example (on the right side of the screen, a little up). When placed correctly, you can either press the LEFT mouse button to set it down, or ALT-INSERT (you may need to do either twice as I've noticed GFA can occaisionaly miss a click). Let's make a border (you could mess with its' border while still in movement mode, if you wanted) by pressing the '+' (plus) key once. Now let's increase the horizontal size of the border by pressing the cursor right key twice. So we have our buttons' physical appearance in order. What else do we have to do? How about telling DIOX that this is going to be a RADIO button. So go to the 'Attr' drop down and select RADIO. A dialog box pops up and presents you with a choice of five different 'groupings' of radio buttons. Select group 1. Hit return. This button is now a radio button in radio group 1. Now let's create the next RADIO button, the one we saw in the example as "Radio A 2". Go to CREATE and select it. Now we have the previous text to edit, as DIOX now has a default to present. ALL menu options will reflect the LAST BUTTON YOU ACTIVATED. We don't have to do a complete re- typing in order to get "Radio_A_1" to "Radio_A_2". Press the DOWN cursor button and you're cursor goes to the end of the text line. Hit BACKSPACE once and then press '2'. Hit return. From now on, everytime you create a button, it will automatically start off as being picked up. How about a tip on how to do some precision positioning of buttons? We want a profesional look, yet v0.9 lacks autosnap. No problem. What we want to do is precisley align the new button under our previous one. So, position it approximatley with the mouse just under the other button, the upper edge of its' border should just touch the bottom of the first buttons' border. Next, let go of the mouse and start using the keyboard. Alternate- left cursor or alternate- right cursor will move the button one charcter space left or right. Shifted- alternate- left and right cursors will move left and right one pixel. The same applies for up and down. Now position the new button so its' left and right sides are flush with the old buttons' left and right sides. Use the SHFT-ALT-RIGHT/LEFT for that movement. Use the SHFT-ALT- UP/DOWN for precise alignment of the buttons' top edge to the old buttons' bottom edge, so they just touch. Now, you've got the left-right alignment correct, okay? And the two buttons are just touching vertically? Good. NOW, press ALT-DOWN cursor once. You now have the ability to uniformly space buttons, because ALT-Cursor always spaces the same distance. The next button under this one you put a single ALT-DOWN from this button, and so on. It works like that for horizontal, too. OK, so now your button is precisley in place. So as not to disturb its' position, use the ALT-INSERT button as a substitute for the LEFT mouse click. You may need to do it twice in a row. I use the ALT-CRSR-INSERT keys constantly! They're how I line things up! Now we have to edit its' text. Select the STRING option and simply edit "Radio A 1" into "Radio A 2" by the same method as you did with editing by CREATE. Generaly, you may sometimes wish to temporarily lay down a button, change its' text, then pick it up to line it up. That is because your text length may vary, and so will your buttons' border dimensions. In our case, the text size was the same, so our previous alignment was not futile. How about our most recent buttons' attribute? We haven't messed with that yet. Look at the 'Attr' drop down menu. As you can see, it is already checked-off in front of RADIO. Let's see if our group is still the same. Select RADIO, and there you see that Group 1 is selected already, which is what we want. Press RETURN. You did not HAVE to check the attribute like that, as it was defaulted to that already. I just wanted you to see it for yourself. Now see if you can make a button whose name is 'Radio_a_3' and whose text is "Radio A 3". Position it under the button whose text is "Radio A 2" by one ALT-DOWN length. Remember that its' attribute defaults to radio group 1 if you don't change it, which we don't want to do. Now create another button called 'Radio_a_4' and give it a text line of "Radio A 4". Position it under the button whose text is "Radio A 3" by the length of one ALT-DOWN. All four buttons should now have uniform, even spacing. Let's change gears a little. We are now going to make another 'grouping' of radio buttons. Let's only put in three buttons this time. CREATE a button entitled 'Radio_b_1'. Give a line of text: "Radio B 1" and position it to the left of the button "Radio A 1". Make it four ALT-RIGHT lengths from the button. NOW, we DO want to make some modification to the attribute, as we are dealing with a different radio group. Can you guess how we will deal with this? Yup. Select RADIO from the drop down, select, oh, Group 4 maybe, (that is what the examples' is) and hit return. Now create a button entitled 'Radio_b_2' and give it text of "Radio B 2" and align it one ALT-DOWN length beneath the "Radio B 1" button. Make one more button called 'Radio_b_3', give it text of "Radio B 3" and put it beneath "Radio B 2" by one ALT-DOWN. Remember, the attributes of the last two buttons default to the previous buttons' if you make no changes. We want no changes from "Radio B 1". How about something different? Let's make a TOGGLE button. First, create a button called 'Toggle_1'. Give it text of "Toggle 1" and put it twoards the upper left of the screen. Now, let's select the TOGGLE attribute by selecting TOGGLE from the 'Attr' drop down. Poof! You've got a toggle button. Make a second toggle called 'Toggle_2' and put it one ALT-DOWN beneath 'Toggle_1'. The attribute is still toggle, remember? Make two EXIT buttons now. Call one 'Exit_1' and give it text of "Exit 1" and place it several ALT-DOWNS under "Toggle 2". Now select EXIT form the 'Attr' strip. Call the other 'Exit_2' and give it text of "Exit 2" and place it one ALT-DOWN beneath "Exit 1". How about making a CANCEL button? And we want an ENTER button, too. Create a button called 'Okay' and make its' text "Okay". Position it in the upper middle of the screen. Select an attribute of ENTER. This is going to be a default button, so let's graphically indicate that by pressing '+' a few times, thickening the border. Create a button called 'Cancel' and give it text of "Cancel". Position it below "Okay" a few ALT-DOWNS. Select the attribute of CANCEL. Also, press '-' a few times to get rid of the thicker border. Make it one pixel thick, like the others. DETAILS! Where's the titles? How about creating a button called 'Radio_title' with text of "RADIO". Place and center this button above the radio buttons. Remember the example? Select the DEAD attribute. This is just for display. Create a button named 'Toggle_title'. For a text line, let's use a special Atari ST character not found on the keyboard. How? Select STRING. Delete what's there now. Type CONTROL-A. Enter the digit 4. Press a cursor key. There's the RIGHT ARROW symbol, whose ST-ASCII code is 4. Continue to type in "Toggle". Position the button to the right of the toggle buttons. Create a button called 'Exit_title' and give its' text line as in toggles', only type in "Exit" instead of "Toggle". The attribute is still DEAD. Shapes and fill patterns. No sweat. How about this. We box in each radio group, then box in the two groups plus the radio title. Select BOX to do that. Start a box corner with mouse right, finish the other corner with mouse left. If you don't like it, press UNDO and whatever the last shape is, it will be deleted (fill pattern counts as a shape). Fill in a pattern between the two small boxes and the big box. Select fill. Then, select a pattern with the right mouse button, start filling with the left mouse button at the appropriate mouse coordinates. How about boxes around TOGGLE and EXIT. Do you remember the example? You can do it. That covers the editing. One more thing. To delete a button, you must activate it by either right-mouse clicking on it and laying it down, or by pressing return when the mouse arrow is on top of the button. Then press delete. That offensive button has now gone away. Now we are going to save it. Do you want to check all the attributes and stuff first? Did you make mistakes? Go to each button with the mouse arrow on top of it, press return, and look at the strip menu options. If you made a mistake, simply change it. Wnat to check its' name? Select RENAME. Just Return if correct, or edit if it's a mistake. OKAY! Everything is good. SAVE it. Select SAVE. Enter the dialog box name of 'Example_box_1'. Return. Save it as EXAMPLE1.LST (always use .LST). NOW TO TEST: Load TEST_BOX.BAS from the GFA interpreter. MERGE your EXAMPLE1.LST file. CHANGE the name of "Your_box_name" to "Example_box_1". Run it! It BETTER work, right? GOOD! It works..... Now let's INTERFACE it! Let's write our own, short program that tests for the various buttons. First, MERGE EXAMPLE.LST or EXAMPLE1.LST. Now, merge in DRAW_BTN.BAS. Next, we'll write a DO-LOOP. Let's exit if we select the button called 'Exit_2'. Otherwise we print the buttons chosen and loop around, feeding back what our previous choice was. Do Cls @Example_box (A$,*A$) !Notice,going IN(A$) Cls ' automatically will be set to ' coming out(*A$). If Instr(A$,"(Radio_a_1)")>0 ! Is 'Radio_a_1' selected? Print "RADIO A 1" Endif ' If Instr(A$,"(Radio_a_2)")>0 ! Is 'Radio_a_2' selected? Print "Radio A 2" Endif ' If Instr(A$,"(Radio_a_3)")>0 ! Is 'Radio_a_3' selected? Print "RADIO A 3" Endif ' If Instr(A$,"(Radio_a_4)")>0 ! Is 'Radio_a_4' selected? Print "RADIO A 4" Endif ' If Instr(A$,"(Radio_b_1)")>0 ! Is 'Radio_b_1' selected? Print "RADIO B 1" Endif ' If Instr(A$,"(Radio_b_2)")>0 ! Is 'Radio_b_2' selected? Print "RADIO B 2" Endif ' If Instr(A$,"(Radio_b_3)")>0 ! Is 'Radio_b_3' selected? Print "RADIO B 3" Endif ' If Instr(A$,"(Toggle_1)")>0 ! Is 'Toggle_1' selected? Print "TOGGLE 1" Endif ' If Instr(A$,"(Toggle_2)")>0 ! Is 'Toggle_2' selected? Print "TOGGLE 2" Endif ' If Instr(A$,"(Exit_1)")>0 ! Is 'Exit_1' selected? Print "Exit_1" Endif ' Exit If Instr(A$,"(Exit_2)")>0 ! If 'Exit_2' selected,end! ' Print " Hit any key ...." Do Exit if inkey$<>"" Loop ' Loop GfABASIC<#B#$h$h$h$h$h$h$h$l$$$$ POSTSELECTXMYM STAT_EXIT TOGGLE_1_STAT TOGGLE_2_STAT EXIT_1_STAT EXIT_2_STATDEFAULTVOIDNEW_STATSELECTEDX_MOUSEY_MOUSEBUTTON_SELECTEDX_TEXTY_TEXTSTYLE CHAR_COLOR CHAR_SIZEHBORDERVBORDERTHICKINVERSEOFFSETWIDTHHIEGHTFATNESSA PRESELECTTEMPBUTTON RADIO1_OLD RADIO2_OLD RADIO3_OLD RADIO4_OLD RADIO5_OLD RADIO1_NEW RADIO2_NEW RADIO3_NEW RADIO4_NEW RADIO5_NEW TOGGLE_1_STAT TOGGLE_2_STAT EXIT_1_STAT EXIT_2_STATRBUTTONOLD_STAT CHARACTERSFOUND_BUTTON_EXAMPLE_BOX EXAMPLE_BOXDRAWSHAPES_EXAMPLE_BOX RADIO_A_1 RADIO_A_2 RADIO_A_3 RADIO_A_4 RADIO_B_1 RADIO_B_2 RADIO_B_3TOGGLE_1TOGGLE_2EXIT_1EXIT_2 RADIO_TITLE TOGGLE_TITLE EXIT_TITLECANCELOKAYFIND_BUTTON_EXAMPLE_BOXRADIO1_EXAMPLE_BOXRADIO4_EXAMPLE_BOXDRAW_TEXT_IN_BOXFYF$M! FNotice,going IN(A$) YF< automatically will be set to 0 coming out(*A$). l8 C@ (Radio_a_1) F  Is 'Radio_a_1' selected?  RADIO A 1F F  8  C@ (Radio_a_2) F Is 'Radio_a_2' selected?  Radio A 2F F  8 ZC@ (Radio_a_3) F Is 'Radio_a_3' selected?  RADIO A 3F F  8 C@ (Radio_a_4) F Is 'Radio_a_4' selected?  RADIO A 4F F  8 C@ (Radio_b_1) F Is 'Radio_b_1' selected?  RADIO B 1F F  8  DC@ (Radio_b_2) F Is 'Radio_b_2' selected?  RADIO B 2F F  8  C@ (Radio_b_3) F Is 'Radio_b_3' selected?  RADIO B 3F F  4  C@ (Toggle_1) F Is 'Toggle_1' selected? TOGGLE 1Fy F 4  &C@ (Toggle_2) F Is 'Toggle_2' selected? TOGGLE 2FT F 0  jC@(Exit_1) F Is 'Exit_1' selected? Exit_1F F 6  ZC@(Exit_2) FI If 'Exit_2' selected,end!   Hit any key ......FF  ZSF FS FC +! F0h!!!!!!!!! ! ! ! ! !Fh!Fh!Fh!Fh!FMF  C@ (Radio_a_1) F! M FE Radio_a_1F_  FRM F F  C@ (Radio_a_2) F! M FE Radio_a_2F_  FRM F F  "C@ (Radio_a_3) F! M FE Radio_a_3F_  .FRM F F  nC@ (Radio_a_4) F! M FE Radio_a_4F_  zFRM F F  C@ (Radio_b_1) F! M FE Radio_b_1F_  FRM F F  C@ (Radio_b_2) F! M FE Radio_b_2F_  FRM F F  RC@ (Radio_b_3) F! M FE Radio_b_3F_  ^FRM F F  C@ (Toggle_1) F M  FEFFEToggle_1F  FTM F F   C@ (Toggle_2) F M  FEFFEToggle_2F  FTM F F M FM FM FM FM FM FM FF ZSBP FEF dFEF FE RF "!! FM!! FD C,(Radio_a_1)(Radio_a_2)(Radio_a_3)(Radio_a_4)@() FM!! FE F FE: @C!(Radio_b_1)(Radio_b_2)(Radio_b_3)@() FM!! FE F FE Toggle_1F ~FM FEFEF FF M  FEFFEToggle_1F F F Toggle_2F FM FEFEF  FF M  FEFFEToggle_2F F F Exit_1F TFM FEFEFEF F M  FEFFEExit_1FEFx F F Exit_2F FM FEFEFEF F M  FEFFEExit_2FEFx F F F$ `Z#Okay #Cancel F `Z#Exit_1 F `Z#Exit_2 F {F:F FFE()FE()FE()FE()FE()FE()FEF FFM!! F OkayF M FEFE()FE()FE()FE()FE()FE()FEF F CancelF M FEFEF F ZFF {`FC.F+!! F  Radio_a_1FM F F 6 Radio_a_2FM F F X Radio_a_3FM F F z Radio_a_4FM F F  Radio_a_1F M F  E Radio_a_1F_ F   Radio_a_2F M F  E Radio_a_2F_ F   Radio_a_3F M F  E Radio_a_3F_ F  R Radio_a_4F M F  E Radio_a_4F_ F .F +!! F4  Radio_b_1FM F F  Radio_b_2FM F F  Radio_b_3FM F F  Radio_b_1F M F  E Radio_b_1F_ F  8 Radio_b_2F M F  E Radio_b_2F_ F  n Radio_b_3F M F  E Radio_b_3F_ F .F +F @5!P# !b!"# F)@z!P# ! !# F)@1!# !@ !(# F)%!!F"&l!(# F@!# !6!# F)@! # !6! # F)%!!F"& !l# F%!!F"&!2# F.F + F\M Radio A 1!:!# !!!!!# !# ! F.F + Fo\M Radio A 2!:!D# !!!!!# !# ! F.F + Fo\M Radio A 3!:!z# !!!!!# !# ! F.F + Fo\M Radio A 4!:!# !!!!!# !# ! F.F + Fo\M Radio B 1! !# !!!!!# !# ! F.F + Fo\M Radio B 2! !D# !!!!!# !# ! F.F + Fo\M Radio B 3! !z# !!!!!# !# ! F.F + Fo`M RADIO BUTTONS!X! # !!!!!# !# ! F.F + FO\MToggle 1!``!# !!!!!# !# ! F .F + Fl\MToggle 2!``!# !!!!!# !# ! F .F + FlZMExit 1!!H# !!!!!# !# ! FF.F + F ZMExit 2!!~# !!!!!# !# ! FF.F + F ^MOkay!!(# !!!!!# !# ! FF.F + F!ZMCancel!yy!$# !!!!!# !# ! F .F + Fe\M TOGGLE!ZZ!P# !!!!!# !# ! FF.F + FGZM EXIT!ZZ!h# !!!!!# !# ! FF.F+ ! ! FZ f# 88 # `` # ``# # # FE Radio_a_1F -F  FZ # 88 # `` # &&# # NN# FE Radio_a_2F -F  FZ R# 88 # `` # \\# # # FE Radio_a_3F -F  FZ # 88 # `` #  # # # FE Radio_a_4F -F  FZ  >#  #  # ``# # # FE Radio_b_1F -F  FZ  #  #  # &&# # NN# FE Radio_b_2F -F  FZ !*#  #  # \\# # # FE Radio_b_3F -F  FZ !# @@ # @@ # ((# # $$# FEToggle_1F-F FZ "# @@ # @@ # DD# #  # FEToggle_2F-F FZ "# pp # ,, # **# # RR# FEExit_1F-F FZ "# pp # ,, # ``# # # FEExit_2F-F FZ #f# {{ #  # @@# # HH# F EOkayF-F FZ ## uu #  # # # ..# FECancelF-F F E Fc|F.FF$+!!!!!!!!! F $> FE@@F $lF $h FEPPF FE FEh!!!F $FEFEFEF %zF $PFEFEFEF %vF %6@FEFEFEF %rF %nFE``FE@@FEF FE FE FE FE(!!!FF!F &FF %FF%!!F %FF%!!F F#FL NOTE! Change Pbox to Prbox and Box to Rbox, and get MAC style buttons! <# !# !#6  !# Fn  &EGF  @# !# !#6  !# F   &`F F &F!F 'F & F !F  'F '# F!F FF FF FF '!!F!F.FF64H7.6GGTg8c?DAb:djd\:&# xBTjҀ(x:V#Procedure Bigbox (Preselect$,Postselect) Local Temp$,Xm,Ym,Button$,Radio1_old$,Radio2_old$,Radio3_old$,Radio4_old$,Radio5_old$,Radio1_new$,Radio2_new$,Radio3_new$,Radio4_new$,Radio5_new$,Stat_exit Local Togglea_stat$, Togglea_stat Local Toggleb_stat$, Toggleb_stat Local Togglec_stat$, Togglec_stat Local Toggled_stat$, Toggled_stat Local Togglee_stat$, Togglee_stat Local Exit1_stat$, Exit1_stat Local Exit2_stat$, Exit2_stat Local Exit3_stat$, Exit3_stat Local Exit4_stat$, Exit4_stat Local Exit5_stat$, Exit5_stat Local Exit6_stat$, Exit6_stat Local Exit7_stat$, Exit7_stat @Drawshapes_Bigbox If Instr(Preselect$,"(Radioa1)")>0 @Radioa1(-1) Let Radio1_old$="Radioa1" Else @Radioa1(0) Endif If Instr(Preselect$,"(Radioa2)")>0 @Radioa2(-1) Let Radio1_old$="Radioa2" Else @Radioa2(0) Endif If Instr(Preselect$,"(Radioa3)")>0 @Radioa3(-1) Let Radio1_old$="Radioa3" Else @Radioa3(0) Endif If Instr(Preselect$,"(Radiob1)")>0 @Radiob1(-1) Let Radio2_old$="Radiob1" Else @Radiob1(0) Endif If Instr(Preselect$,"(Radiob2)")>0 @Radiob2(-1) Let Radio2_old$="Radiob2" Else @Radiob2(0) Endif If Instr(Preselect$,"(Radiob3)")>0 @Radiob3(-1) Let Radio2_old$="Radiob3" Else @Radiob3(0) Endif If Instr(Preselect$,"(Radioe1)")>0 @Radioe1(-1) Let Radio5_old$="Radioe1" Else @Radioe1(0) Endif If Instr(Preselect$,"(Radioe2)")>0 @Radioe2(-1) Let Radio5_old$="Radioe2" Else @Radioe2(0) Endif If Instr(Preselect$,"(Radioe3)")>0 @Radioe3(-1) Let Radio5_old$="Radioe3" Else @Radioe3(0) Endif If Instr(Preselect$,"(Radioc1)")>0 @Radioc1(-1) Let Radio3_old$="Radioc1" Else @Radioc1(0) Endif If Instr(Preselect$,"(Radioc2)")>0 @Radioc2(-1) Let Radio3_old$="Radioc2" Else @Radioc2(0) Endif If Instr(Preselect$,"(Radioc3)")>0 @Radioc3(-1) Let Radio3_old$="Radioc3" Else @Radioc3(0) Endif If Instr(Preselect$,"(Radioc4)")>0 @Radioc4(-1) Let Radio3_old$="Radioc4" Else @Radioc4(0) Endif If Instr(Preselect$,"(Radioc5)")>0 @Radioc5(-1) Let Radio3_old$="Radioc5" Else @Radioc5(0) Endif If Instr(Preselect$,"(Radioc6)")>0 @Radioc6(-1) Let Radio3_old$="Radioc6" Else @Radioc6(0) Endif If Instr(Preselect$,"(Radioc7)")>0 @Radioc7(-1) Let Radio3_old$="Radioc7" Else @Radioc7(0) Endif If Instr(Preselect$,"(Radioc8)")>0 @Radioc8(-1) Let Radio3_old$="Radioc8" Else @Radioc8(0) Endif If Instr(Preselect$,"(Radioc9)")>0 @Radioc9(-1) Let Radio3_old$="Radioc9" Else @Radioc9(0) Endif If Instr(Preselect$,"(Radioc0)")>0 @Radioc0(-1) Let Radio3_old$="Radioc0" Else @Radioc0(0) Endif If Instr(Preselect$,"(Radioa0)")>0 @Radioa0(-1) Let Radio1_old$="Radioa0" Else @Radioa0(0) Endif If Instr(Preselect$,"(Radioa4)")>0 @Radioa4(-1) Let Radio1_old$="Radioa4" Else @Radioa4(0) Endif If Instr(Preselect$,"(Radioa5)")>0 @Radioa5(-1) Let Radio1_old$="Radioa5" Else @Radioa5(0) Endif If Instr(Preselect$,"(Radioa6)")>0 @Radioa6(-1) Let Radio1_old$="Radioa6" Else @Radioa6(0) Endif If Instr(Preselect$,"(Radioa7)")>0 @Radioa7(-1) Let Radio1_old$="Radioa7" Else @Radioa7(0) Endif If Instr(Preselect$,"(Radioa8)")>0 @Radioa8(-1) Let Radio1_old$="Radioa8" Else @Radioa8(0) Endif If Instr(Preselect$,"(Radioa9)")>0 @Radioa9(-1) Let Radio1_old$="Radioa9" Else @Radioa9(0) Endif If Instr(Preselect$,"(Radiob0)")>0 @Radiob0(-1) Let Radio2_old$="Radiob0" Else @Radiob0(0) Endif If Instr(Preselect$,"(Radiob4)")>0 @Radiob4(-1) Let Radio2_old$="Radiob4" Else @Radiob4(0) Endif If Instr(Preselect$,"(Radiob5)")>0 @Radiob5(-1) Let Radio2_old$="Radiob5" Else @Radiob5(0) Endif If Instr(Preselect$,"(Radiob6)")>0 @Radiob6(-1) Let Radio2_old$="Radiob6" Else @Radiob6(0) Endif If Instr(Preselect$,"(Radiob7)")>0 @Radiob7(-1) Let Radio2_old$="Radiob7" Else @Radiob7(0) Endif If Instr(Preselect$,"(Radiob8)")>0 @Radiob8(-1) Let Radio2_old$="Radiob8" Else @Radiob8(0) Endif If Instr(Preselect$,"(Radiob9)")>0 @Radiob9(-1) Let Radio2_old$="Radiob9" Else @Radiob9(0) Endif If Instr(Preselect$,"(Radioe0)")>0 @Radioe0(-1) Let Radio5_old$="Radioe0" Else @Radioe0(0) Endif If Instr(Preselect$,"(Radioe4)")>0 @Radioe4(-1) Let Radio5_old$="Radioe4" Else @Radioe4(0) Endif If Instr(Preselect$,"(Radioe5)")>0 @Radioe5(-1) Let Radio5_old$="Radioe5" Else @Radioe5(0) Endif If Instr(Preselect$,"(Radioe6)")>0 @Radioe6(-1) Let Radio5_old$="Radioe6" Else @Radioe6(0) Endif If Instr(Preselect$,"(Radioe7)")>0 @Radioe7(-1) Let Radio5_old$="Radioe7" Else @Radioe7(0) Endif If Instr(Preselect$,"(Radioe8)")>0 @Radioe8(-1) Let Radio5_old$="Radioe8" Else @Radioe8(0) Endif If Instr(Preselect$,"(Radioe9)")>0 @Radioe9(-1) Let Radio5_old$="Radioe9" Else @Radioe9(0) Endif If Instr(Preselect$,"(Radiod0)")>0 @Radiod0(-1) Let Radio4_old$="Radiod0" Else @Radiod0(0) Endif If Instr(Preselect$,"(Radiod1)")>0 @Radiod1(-1) Let Radio4_old$="Radiod1" Else @Radiod1(0) Endif If Instr(Preselect$,"(Radiod2)")>0 @Radiod2(-1) Let Radio4_old$="Radiod2" Else @Radiod2(0) Endif If Instr(Preselect$,"(Radiod3)")>0 @Radiod3(-1) Let Radio4_old$="Radiod3" Else @Radiod3(0) Endif If Instr(Preselect$,"(Radiod4)")>0 @Radiod4(-1) Let Radio4_old$="Radiod4" Else @Radiod4(0) Endif If Instr(Preselect$,"(Radiod5)")>0 @Radiod5(-1) Let Radio4_old$="Radiod5" Else @Radiod5(0) Endif If Instr(Preselect$,"(Radiod6)")>0 @Radiod6(-1) Let Radio4_old$="Radiod6" Else @Radiod6(0) Endif If Instr(Preselect$,"(Radiod7)")>0 @Radiod7(-1) Let Radio4_old$="Radiod7" Else @Radiod7(0) Endif If Instr(Preselect$,"(Radiod8)")>0 @Radiod8(-1) Let Radio4_old$="Radiod8" Else @Radiod8(0) Endif If Instr(Preselect$,"(Radiod9)")>0 @Radiod9(-1) Let Radio4_old$="Radiod9" Else @Radiod9(0) Endif If Instr(Preselect$,"(Togglea)")>0 @Togglea(-1) Let Togglea_stat=true Let Togglea_stat$="Togglea" Else @Togglea(0) Endif If Instr(Preselect$,"(Toggleb)")>0 @Toggleb(-1) Let Toggleb_stat=true Let Toggleb_stat$="Toggleb" Else @Toggleb(0) Endif If Instr(Preselect$,"(Togglec)")>0 @Togglec(-1) Let Togglec_stat=true Let Togglec_stat$="Togglec" Else @Togglec(0) Endif If Instr(Preselect$,"(Toggled)")>0 @Toggled(-1) Let Toggled_stat=true Let Toggled_stat$="Toggled" Else @Toggled(0) Endif If Instr(Preselect$,"(Togglee)")>0 @Togglee(-1) Let Togglee_stat=true Let Togglee_stat$="Togglee" Else @Togglee(0) Endif @Exit1(0) @Exit2(0) @Exit3(0) @Exit4(0) @Exit5(0) @Exit6(0) @Exit7(0) @Canceldata(0) @Enterdata(0) Do If Inkey$=Chr$(13) Default=True Else Default=False Endif If Mousek=1 Mouse Xm,Ym,Void @Find_button_Bigbox (Xm,Ym,*Button$) If Instr("(Radioa1)(Radioa2)(Radioa3)(Radioa0)(Radioa4)(Radioa5)(Radioa6)(Radioa7)(Radioa8)(Radioa9)","("+Button$+")")>0 @Radio1_Bigbox (Button$,Radio1_old$,*Radio1_new$) Radio1_old$=Radio1_new$ Endif If Instr("(Radiob1)(Radiob2)(Radiob3)(Radiob0)(Radiob4)(Radiob5)(Radiob6)(Radiob7)(Radiob8)(Radiob9)","("+Button$+")")>0 @Radio2_Bigbox (Button$,Radio2_old$,*Radio2_new$) Radio2_old$=Radio2_new$ Endif If Instr("(Radioc1)(Radioc2)(Radioc3)(Radioc4)(Radioc5)(Radioc6)(Radioc7)(Radioc8)(Radioc9)(Radioc0)","("+Button$+")")>0 @Radio3_Bigbox (Button$,Radio3_old$,*Radio3_new$) Radio3_old$=Radio3_new$ Endif If Instr("(Radiod0)(Radiod1)(Radiod2)(Radiod3)(Radiod4)(Radiod5)(Radiod6)(Radiod7)(Radiod8)(Radiod9)","("+Button$+")")>0 @Radio4_Bigbox (Button$,Radio4_old$,*Radio4_new$) Radio4_old$=Radio4_new$ Endif If Instr("(Radioe1)(Radioe2)(Radioe3)(Radioe0)(Radioe4)(Radioe5)(Radioe6)(Radioe7)(Radioe8)(Radioe9)","("+Button$+")")>0 @Radio5_Bigbox (Button$,Radio5_old$,*Radio5_new$) Radio5_old$=Radio5_new$ Endif If Button$="Togglea" If Togglea_stat @Togglea(0) Let Togglea_stat=False Let Togglea_stat$="" Else @Togglea(-1) Let Togglea_stat=True Let Togglea_stat$="Togglea" Endif Endif If Button$="Toggleb" If Toggleb_stat @Toggleb(0) Let Toggleb_stat=False Let Toggleb_stat$="" Else @Toggleb(-1) Let Toggleb_stat=True Let Toggleb_stat$="Toggleb" Endif Endif If Button$="Togglec" If Togglec_stat @Togglec(0) Let Togglec_stat=False Let Togglec_stat$="" Else @Togglec(-1) Let Togglec_stat=True Let Togglec_stat$="Togglec" Endif Endif If Button$="Toggled" If Toggled_stat @Toggled(0) Let Toggled_stat=False Let Toggled_stat$="" Else @Toggled(-1) Let Toggled_stat=True Let Toggled_stat$="Toggled" Endif Endif If Button$="Togglee" If Togglee_stat @Togglee(0) Let Togglee_stat=False Let Togglee_stat$="" Else @Togglee(-1) Let Togglee_stat=True Let Togglee_stat$="Togglee" Endif Endif If Button$="Exit1" If Exit1_stat @Exit1(0) Let Exit1_stat=False Let Exit1_stat$="" Let Stat_exit=False Else @Exit1(-1) Let Exit1_stat=True Let Exit1_stat$="Exit1" Let Stat_exit=True Endif Endif If Button$="Exit2" If Exit2_stat @Exit2(0) Let Exit2_stat=False Let Exit2_stat$="" Let Stat_exit=False Else @Exit2(-1) Let Exit2_stat=True Let Exit2_stat$="Exit2" Let Stat_exit=True Endif Endif If Button$="Exit3" If Exit3_stat @Exit3(0) Let Exit3_stat=False Let Exit3_stat$="" Let Stat_exit=False Else @Exit3(-1) Let Exit3_stat=True Let Exit3_stat$="Exit3" Let Stat_exit=True Endif Endif If Button$="Exit4" If Exit4_stat @Exit4(0) Let Exit4_stat=False Let Exit4_stat$="" Let Stat_exit=False Else @Exit4(-1) Let Exit4_stat=True Let Exit4_stat$="Exit4" Let Stat_exit=True Endif Endif If Button$="Exit5" If Exit5_stat @Exit5(0) Let Exit5_stat=False Let Exit5_stat$="" Let Stat_exit=False Else @Exit5(-1) Let Exit5_stat=True Let Exit5_stat$="Exit5" Let Stat_exit=True Endif Endif If Button$="Exit6" If Exit6_stat @Exit6(0) Let Exit6_stat=False Let Exit6_stat$="" Let Stat_exit=False Else @Exit6(-1) Let Exit6_stat=True Let Exit6_stat$="Exit6" Let Stat_exit=True Endif Endif If Button$="Exit7" If Exit7_stat @Exit7(0) Let Exit7_stat=False Let Exit7_stat$="" Let Stat_exit=False Else @Exit7(-1) Let Exit7_stat=True Let Exit7_stat$="Exit7" Let Stat_exit=True Endif Endif Endif Exit if (Button$="Enterdata") Or (Button$="Canceldata") Or Default Exit If (Button$="Exit1") Exit If (Button$="Exit2") Exit If (Button$="Exit3") Exit If (Button$="Exit4") Exit If (Button$="Exit5") Exit If (Button$="Exit6") Exit If (Button$="Exit7") Pause 4 Loop If Stat_exit Temp$=Temp$+"("+Radio1_old$+")" Temp$=Temp$+"("+Radio2_old$+")" Temp$=Temp$+"("+Radio5_old$+")" Temp$=Temp$+"("+Radio3_old$+")" Temp$=Temp$+"("+Radio1_old$+")" Temp$=Temp$+"("+Radio2_old$+")" Temp$=Temp$+"("+Radio5_old$+")" Temp$=Temp$+"("+Radio4_old$+")" Temp$=Temp$+"("+Togglea_stat$+")" Temp$=Temp$+"("+Toggleb_stat$+")" Temp$=Temp$+"("+Togglec_stat$+")" Temp$=Temp$+"("+Toggled_stat$+")" Temp$=Temp$+"("+Togglee_stat$+")" Temp$=Temp$+"("+Exit1_stat$+")" Temp$=Temp$+"("+Exit2_stat$+")" Temp$=Temp$+"("+Exit3_stat$+")" Temp$=Temp$+"("+Exit4_stat$+")" Temp$=Temp$+"("+Exit5_stat$+")" Temp$=Temp$+"("+Exit6_stat$+")" Temp$=Temp$+"("+Exit7_stat$+")" *Postselect=Temp$ Endif Do @Find_button_Bigbox (Xm,Ym,*Button$) If Button$="Enterdata" Or Default @Enterdata(-1) Stat_exit=True Temp$=Temp$+"("+Radio1_old$+")" Temp$=Temp$+"("+Radio2_old$+")" Temp$=Temp$+"("+Radio5_old$+")" Temp$=Temp$+"("+Radio3_old$+")" Temp$=Temp$+"("+Radio1_old$+")" Temp$=Temp$+"("+Radio2_old$+")" Temp$=Temp$+"("+Radio5_old$+")" Temp$=Temp$+"("+Radio4_old$+")" Temp$=Temp$+"("+Togglea_stat$+")" Temp$=Temp$+"("+Toggleb_stat$+")" Temp$=Temp$+"("+Togglec_stat$+")" Temp$=Temp$+"("+Toggled_stat$+")" Temp$=Temp$+"("+Togglee_stat$+")" Temp$=Temp$+"("+Exit1_stat$+")" Temp$=Temp$+"("+Exit2_stat$+")" Temp$=Temp$+"("+Exit3_stat$+")" Temp$=Temp$+"("+Exit4_stat$+")" Temp$=Temp$+"("+Exit5_stat$+")" Temp$=Temp$+"("+Exit6_stat$+")" Temp$=Temp$+"("+Exit7_stat$+")" *Postselect=Temp$ Endif If Button$="Canceldata" @Canceldata(-1) Stat_exit=True *Postselect=Preselect$ Endif Exit if Stat_exit Loop Pause 7 Return Procedure Radio1_Bigbox (Rbutton$,Old_stat$,New_stat) If Old_stat$="Radioa1" @Radioa1(0) Endif If Old_stat$="Radioa2" @Radioa2(0) Endif If Old_stat$="Radioa3" @Radioa3(0) Endif If Old_stat$="Radioa0" @Radioa0(0) Endif If Old_stat$="Radioa4" @Radioa4(0) Endif If Old_stat$="Radioa5" @Radioa5(0) Endif If Old_stat$="Radioa6" @Radioa6(0) Endif If Old_stat$="Radioa7" @Radioa7(0) Endif If Old_stat$="Radioa8" @Radioa8(0) Endif If Old_stat$="Radioa9" @Radioa9(0) Endif If Rbutton$="Radioa1" @Radioa1(-1) *New_stat="Radioa1" Endif If Rbutton$="Radioa2" @Radioa2(-1) *New_stat="Radioa2" Endif If Rbutton$="Radioa3" @Radioa3(-1) *New_stat="Radioa3" Endif If Rbutton$="Radioa0" @Radioa0(-1) *New_stat="Radioa0" Endif If Rbutton$="Radioa4" @Radioa4(-1) *New_stat="Radioa4" Endif If Rbutton$="Radioa5" @Radioa5(-1) *New_stat="Radioa5" Endif If Rbutton$="Radioa6" @Radioa6(-1) *New_stat="Radioa6" Endif If Rbutton$="Radioa7" @Radioa7(-1) *New_stat="Radioa7" Endif If Rbutton$="Radioa8" @Radioa8(-1) *New_stat="Radioa8" Endif If Rbutton$="Radioa9" @Radioa9(-1) *New_stat="Radioa9" Endif Return Procedure Radio2_Bigbox (Rbutton$,Old_stat$,New_stat) If Old_stat$="Radiob1" @Radiob1(0) Endif If Old_stat$="Radiob2" @Radiob2(0) Endif If Old_stat$="Radiob3" @Radiob3(0) Endif If Old_stat$="Radiob0" @Radiob0(0) Endif If Old_stat$="Radiob4" @Radiob4(0) Endif If Old_stat$="Radiob5" @Radiob5(0) Endif If Old_stat$="Radiob6" @Radiob6(0) Endif If Old_stat$="Radiob7" @Radiob7(0) Endif If Old_stat$="Radiob8" @Radiob8(0) Endif If Old_stat$="Radiob9" @Radiob9(0) Endif If Rbutton$="Radiob1" @Radiob1(-1) *New_stat="Radiob1" Endif If Rbutton$="Radiob2" @Radiob2(-1) *New_stat="Radiob2" Endif If Rbutton$="Radiob3" @Radiob3(-1) *New_stat="Radiob3" Endif If Rbutton$="Radiob0" @Radiob0(-1) *New_stat="Radiob0" Endif If Rbutton$="Radiob4" @Radiob4(-1) *New_stat="Radiob4" Endif If Rbutton$="Radiob5" @Radiob5(-1) *New_stat="Radiob5" Endif If Rbutton$="Radiob6" @Radiob6(-1) *New_stat="Radiob6" Endif If Rbutton$="Radiob7" @Radiob7(-1) *New_stat="Radiob7" Endif If Rbutton$="Radiob8" @Radiob8(-1) *New_stat="Radiob8" Endif If Rbutton$="Radiob9" @Radiob9(-1) *New_stat="Radiob9" Endif Return Procedure Radio3_Bigbox (Rbutton$,Old_stat$,New_stat) If Old_stat$="Radioc1" @Radioc1(0) Endif If Old_stat$="Radioc2" @Radioc2(0) Endif If Old_stat$="Radioc3" @Radioc3(0) Endif If Old_stat$="Radioc4" @Radioc4(0) Endif If Old_stat$="Radioc5" @Radioc5(0) Endif If Old_stat$="Radioc6" @Radioc6(0) Endif If Old_stat$="Radioc7" @Radioc7(0) Endif If Old_stat$="Radioc8" @Radioc8(0) Endif If Old_stat$="Radioc9" @Radioc9(0) Endif If Old_stat$="Radioc0" @Radioc0(0) Endif If Rbutton$="Radioc1" @Radioc1(-1) *New_stat="Radioc1" Endif If Rbutton$="Radioc2" @Radioc2(-1) *New_stat="Radioc2" Endif If Rbutton$="Radioc3" @Radioc3(-1) *New_stat="Radioc3" Endif If Rbutton$="Radioc4" @Radioc4(-1) *New_stat="Radioc4" Endif If Rbutton$="Radioc5" @Radioc5(-1) *New_stat="Radioc5" Endif If Rbutton$="Radioc6" @Radioc6(-1) *New_stat="Radioc6" Endif If Rbutton$="Radioc7" @Radioc7(-1) *New_stat="Radioc7" Endif If Rbutton$="Radioc8" @Radioc8(-1) *New_stat="Radioc8" Endif If Rbutton$="Radioc9" @Radioc9(-1) *New_stat="Radioc9" Endif If Rbutton$="Radioc0" @Radioc0(-1) *New_stat="Radioc0" Endif Return Procedure Radio4_Bigbox (Rbutton$,Old_stat$,New_stat) If Old_stat$="Radiod0" @Radiod0(0) Endif If Old_stat$="Radiod1" @Radiod1(0) Endif If Old_stat$="Radiod2" @Radiod2(0) Endif If Old_stat$="Radiod3" @Radiod3(0) Endif If Old_stat$="Radiod4" @Radiod4(0) Endif If Old_stat$="Radiod5" @Radiod5(0) Endif If Old_stat$="Radiod6" @Radiod6(0) Endif If Old_stat$="Radiod7" @Radiod7(0) Endif If Old_stat$="Radiod8" @Radiod8(0) Endif If Old_stat$="Radiod9" @Radiod9(0) Endif If Rbutton$="Radiod0" @Radiod0(-1) *New_stat="Radiod0" Endif If Rbutton$="Radiod1" @Radiod1(-1) *New_stat="Radiod1" Endif If Rbutton$="Radiod2" @Radiod2(-1) *New_stat="Radiod2" Endif If Rbutton$="Radiod3" @Radiod3(-1) *New_stat="Radiod3" Endif If Rbutton$="Radiod4" @Radiod4(-1) *New_stat="Radiod4" Endif If Rbutton$="Radiod5" @Radiod5(-1) *New_stat="Radiod5" Endif If Rbutton$="Radiod6" @Radiod6(-1) *New_stat="Radiod6" Endif If Rbutton$="Radiod7" @Radiod7(-1) *New_stat="Radiod7" Endif If Rbutton$="Radiod8" @Radiod8(-1) *New_stat="Radiod8" Endif If Rbutton$="Radiod9" @Radiod9(-1) *New_stat="Radiod9" Endif Return Procedure Radio5_Bigbox (Rbutton$,Old_stat$,New_stat) If Old_stat$="Radioe1" @Radioe1(0) Endif If Old_stat$="Radioe2" @Radioe2(0) Endif If Old_stat$="Radioe3" @Radioe3(0) Endif If Old_stat$="Radioe0" @Radioe0(0) Endif If Old_stat$="Radioe4" @Radioe4(0) Endif If Old_stat$="Radioe5" @Radioe5(0) Endif If Old_stat$="Radioe6" @Radioe6(0) Endif If Old_stat$="Radioe7" @Radioe7(0) Endif If Old_stat$="Radioe8" @Radioe8(0) Endif If Old_stat$="Radioe9" @Radioe9(0) Endif If Rbutton$="Radioe1" @Radioe1(-1) *New_stat="Radioe1" Endif If Rbutton$="Radioe2" @Radioe2(-1) *New_stat="Radioe2" Endif If Rbutton$="Radioe3" @Radioe3(-1) *New_stat="Radioe3" Endif If Rbutton$="Radioe0" @Radioe0(-1) *New_stat="Radioe0" Endif If Rbutton$="Radioe4" @Radioe4(-1) *New_stat="Radioe4" Endif If Rbutton$="Radioe5" @Radioe5(-1) *New_stat="Radioe5" Endif If Rbutton$="Radioe6" @Radioe6(-1) *New_stat="Radioe6" Endif If Rbutton$="Radioe7" @Radioe7(-1) *New_stat="Radioe7" Endif If Rbutton$="Radioe8" @Radioe8(-1) *New_stat="Radioe8" Endif If Rbutton$="Radioe9" @Radioe9(-1) *New_stat="Radioe9" Endif Return Procedure Drawshapes_Bigbox box 526,14/(2/xbios(4)),608,119/(2/Xbios(4)) box 522,11/(2/xbios(4)),613,122/(2/Xbios(4)) Deffill 1,2,4 Fill577,66/(2/Xbios(4)) box 504,11/(2/xbios(4)),38,296/(2/Xbios(4)) Deffill 1,2,4 Fill221,55/(2/Xbios(4)) box 38,320/(2/xbios(4)),504,364/(2/Xbios(4)) Deffill 1,2,4 Fill222,325/(2/Xbios(4)) box 522,145/(2/xbios(4)),613,351/(2/Xbios(4)) Deffill 1,2,4 Fill572,152/(2/Xbios(4)) Return Procedure Radioa1(Selected) @Draw_text_in_box("Radio A1",146,64/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioa2(Selected) @Draw_text_in_box("Radio A2",146,91/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioa3(Selected) @Draw_text_in_box("Radio A3",146,118/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiob1(Selected) @Draw_text_in_box("Radio B1",239,64/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiob2(Selected) @Draw_text_in_box("Radio B2",239,91/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiob3(Selected) @Draw_text_in_box("Radio B3",239,118/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioe1(Selected) @Draw_text_in_box("Radio E1",332,64/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioe2(Selected) @Draw_text_in_box("Radio E2",332,91/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioe3(Selected) @Draw_text_in_box("Radio E3",332,118/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Enterdata(Selected) @Draw_text_in_box("ENTER",547,46/(2/xbios(4)),0,1,1,5,7/(2/Xbios(4)),4/(2/Xbios(4)),Selected) Return Procedure Canceldata(Selected) @Draw_text_in_box("Cancel",543,99/(2/xbios(4)),0,1,1,5,8/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioc1(Selected) @Draw_text_in_box("Radio C1",53,64/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioc2(Selected) @Draw_text_in_box("Radio C2",53,91/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioc3(Selected) @Draw_text_in_box("Radio C3",53,118/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioc4(Selected) @Draw_text_in_box("Radio C4",53,145/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioc5(Selected) @Draw_text_in_box("Radio C5",53,172/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioc6(Selected) @Draw_text_in_box("Radio C6",53,199/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioc7(Selected) @Draw_text_in_box("Radio C7",53,226/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioc8(Selected) @Draw_text_in_box("Radio C8",53,253/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioc9(Selected) @Draw_text_in_box("Radio C9",53,280/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioc0(Selected) @Draw_text_in_box("Radio C0",53,37/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioa0(Selected) @Draw_text_in_box("Radio A0",146,37/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioa4(Selected) @Draw_text_in_box("Radio A4",146,145/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioa5(Selected) @Draw_text_in_box("Radio A5",146,172/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioa6(Selected) @Draw_text_in_box("Radio A6",146,199/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioa7(Selected) @Draw_text_in_box("Radio A7",146,226/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioa8(Selected) @Draw_text_in_box("Radio A8",146,253/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioa9(Selected) @Draw_text_in_box("Radio A9",146,280/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiob0(Selected) @Draw_text_in_box("Radio B0",239,37/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiob4(Selected) @Draw_text_in_box("Radio B4",239,145/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiob5(Selected) @Draw_text_in_box("Radio B5",239,172/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiob6(Selected) @Draw_text_in_box("Radio B6",239,199/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiob7(Selected) @Draw_text_in_box("Radio B7",239,226/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiob8(Selected) @Draw_text_in_box("Radio B8",239,253/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiob9(Selected) @Draw_text_in_box("Radio B9",239,280/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioe0(Selected) @Draw_text_in_box("Radio E0",332,37/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioe4(Selected) @Draw_text_in_box("Radio E4",332,145/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioe5(Selected) @Draw_text_in_box("Radio E5",332,172/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioe6(Selected) @Draw_text_in_box("Radio E6",332,199/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioe7(Selected) @Draw_text_in_box("Radio E7",332,226/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioe8(Selected) @Draw_text_in_box("Radio E8",332,253/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radioe9(Selected) @Draw_text_in_box("Radio E9",332,280/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiod0(Selected) @Draw_text_in_box("Radio D0",425,37/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiod1(Selected) @Draw_text_in_box("Radio D1",425,64/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiod2(Selected) @Draw_text_in_box("Radio D2",425,91/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiod3(Selected) @Draw_text_in_box("Radio D3",425,118/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiod4(Selected) @Draw_text_in_box("Radio D4",425,145/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiod5(Selected) @Draw_text_in_box("Radio D5",425,172/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiod6(Selected) @Draw_text_in_box("Radio D6",425,199/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiod7(Selected) @Draw_text_in_box("Radio D7",425,226/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiod8(Selected) @Draw_text_in_box("Radio D8",425,253/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Radiod9(Selected) @Draw_text_in_box("Radio D9",425,280/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Togglea(Selected) @Draw_text_in_box("Toggle A",53,347/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Toggleb(Selected) @Draw_text_in_box("Toggle B",146,347/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Togglec(Selected) @Draw_text_in_box("Toggle C",239,347/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Toggled(Selected) @Draw_text_in_box("Toggle D",332,347/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Togglee(Selected) @Draw_text_in_box("Toggle E",425,347/(2/xbios(4)),0,1,1,5,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Exit1(Selected) @Draw_text_in_box("Exit 1",543,172/(2/xbios(4)),0,1,1,13,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Exit2(Selected) @Draw_text_in_box("Exit 2",543,199/(2/xbios(4)),0,1,1,13,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Exit3(Selected) @Draw_text_in_box("Exit 3",543,226/(2/xbios(4)),0,1,1,13,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Exit4(Selected) @Draw_text_in_box("Exit 4",543,253/(2/xbios(4)),0,1,1,13,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Exit5(Selected) @Draw_text_in_box("Exit 5",543,280/(2/xbios(4)),0,1,1,13,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Exit6(Selected) @Draw_text_in_box("Exit 6",543,307/(2/xbios(4)),0,1,1,13,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Exit7(Selected) @Draw_text_in_box("Exit 7",543,334/(2/xbios(4)),0,1,1,13,0/(2/Xbios(4)),1/(2/Xbios(4)),Selected) Return Procedure Find_button_Bigbox (X_mouse,Y_mouse,Button_selected) If (X_mouse>139) And (X_mouse<217) And (Y_mouse>49/(2/Xbios(4))) And (Y_mouse<69/(2/Xbios(4))) *Button_selected="Radioa1" Goto Found_button_Bigbox Endif If (X_mouse>139) And (X_mouse<217) And (Y_mouse>76/(2/Xbios(4))) And (Y_mouse<96/(2/Xbios(4))) *Button_selected="Radioa2" Goto Found_button_Bigbox Endif If (X_mouse>139) And (X_mouse<217) And (Y_mouse>103/(2/Xbios(4))) And (Y_mouse<123/(2/Xbios(4))) *Button_selected="Radioa3" Goto Found_button_Bigbox Endif If (X_mouse>232) And (X_mouse<310) And (Y_mouse>49/(2/Xbios(4))) And (Y_mouse<69/(2/Xbios(4))) *Button_selected="Radiob1" Goto Found_button_Bigbox Endif If (X_mouse>232) And (X_mouse<310) And (Y_mouse>76/(2/Xbios(4))) And (Y_mouse<96/(2/Xbios(4))) *Button_selected="Radiob2" Goto Found_button_Bigbox Endif If (X_mouse>232) And (X_mouse<310) And (Y_mouse>103/(2/Xbios(4))) And (Y_mouse<123/(2/Xbios(4))) *Button_selected="Radiob3" Goto Found_button_Bigbox Endif If (X_mouse>325) And (X_mouse<403) And (Y_mouse>49/(2/Xbios(4))) And (Y_mouse<69/(2/Xbios(4))) *Button_selected="Radioe1" Goto Found_button_Bigbox Endif If (X_mouse>325) And (X_mouse<403) And (Y_mouse>76/(2/Xbios(4))) And (Y_mouse<96/(2/Xbios(4))) *Button_selected="Radioe2" Goto Found_button_Bigbox Endif If (X_mouse>325) And (X_mouse<403) And (Y_mouse>103/(2/Xbios(4))) And (Y_mouse<123/(2/Xbios(4))) *Button_selected="Radioe3" Goto Found_button_Bigbox Endif If (X_mouse>537) And (X_mouse<597) And (Y_mouse>21/(2/Xbios(4))) And (Y_mouse<61/(2/Xbios(4))) *Button_selected="Enterdata" Goto Found_button_Bigbox Endif If (X_mouse>536) And (X_mouse<598) And (Y_mouse>76/(2/Xbios(4))) And (Y_mouse<112/(2/Xbios(4))) *Button_selected="Canceldata" Goto Found_button_Bigbox Endif If (X_mouse>46) And (X_mouse<124) And (Y_mouse>49/(2/Xbios(4))) And (Y_mouse<69/(2/Xbios(4))) *Button_selected="Radioc1" Goto Found_button_Bigbox Endif If (X_mouse>46) And (X_mouse<124) And (Y_mouse>76/(2/Xbios(4))) And (Y_mouse<96/(2/Xbios(4))) *Button_selected="Radioc2" Goto Found_button_Bigbox Endif If (X_mouse>46) And (X_mouse<124) And (Y_mouse>103/(2/Xbios(4))) And (Y_mouse<123/(2/Xbios(4))) *Button_selected="Radioc3" Goto Found_button_Bigbox Endif If (X_mouse>46) And (X_mouse<124) And (Y_mouse>130/(2/Xbios(4))) And (Y_mouse<150/(2/Xbios(4))) *Button_selected="Radioc4" Goto Found_button_Bigbox Endif If (X_mouse>46) And (X_mouse<124) And (Y_mouse>157/(2/Xbios(4))) And (Y_mouse<177/(2/Xbios(4))) *Button_selected="Radioc5" Goto Found_button_Bigbox Endif If (X_mouse>46) And (X_mouse<124) And (Y_mouse>184/(2/Xbios(4))) And (Y_mouse<204/(2/Xbios(4))) *Button_selected="Radioc6" Goto Found_button_Bigbox Endif If (X_mouse>46) And (X_mouse<124) And (Y_mouse>211/(2/Xbios(4))) And (Y_mouse<231/(2/Xbios(4))) *Button_selected="Radioc7" Goto Found_button_Bigbox Endif If (X_mouse>46) And (X_mouse<124) And (Y_mouse>238/(2/Xbios(4))) And (Y_mouse<258/(2/Xbios(4))) *Button_selected="Radioc8" Goto Found_button_Bigbox Endif If (X_mouse>46) And (X_mouse<124) And (Y_mouse>265/(2/Xbios(4))) And (Y_mouse<285/(2/Xbios(4))) *Button_selected="Radioc9" Goto Found_button_Bigbox Endif If (X_mouse>46) And (X_mouse<124) And (Y_mouse>22/(2/Xbios(4))) And (Y_mouse<42/(2/Xbios(4))) *Button_selected="Radioc0" Goto Found_button_Bigbox Endif If (X_mouse>139) And (X_mouse<217) And (Y_mouse>22/(2/Xbios(4))) And (Y_mouse<42/(2/Xbios(4))) *Button_selected="Radioa0" Goto Found_button_Bigbox Endif If (X_mouse>139) And (X_mouse<217) And (Y_mouse>130/(2/Xbios(4))) And (Y_mouse<150/(2/Xbios(4))) *Button_selected="Radioa4" Goto Found_button_Bigbox Endif If (X_mouse>139) And (X_mouse<217) And (Y_mouse>157/(2/Xbios(4))) And (Y_mouse<177/(2/Xbios(4))) *Button_selected="Radioa5" Goto Found_button_Bigbox Endif If (X_mouse>139) And (X_mouse<217) And (Y_mouse>184/(2/Xbios(4))) And (Y_mouse<204/(2/Xbios(4))) *Button_selected="Radioa6" Goto Found_button_Bigbox Endif If (X_mouse>139) And (X_mouse<217) And (Y_mouse>211/(2/Xbios(4))) And (Y_mouse<231/(2/Xbios(4))) *Button_selected="Radioa7" Goto Found_button_Bigbox Endif If (X_mouse>139) And (X_mouse<217) And (Y_mouse>238/(2/Xbios(4))) And (Y_mouse<258/(2/Xbios(4))) *Button_selected="Radioa8" Goto Found_button_Bigbox Endif If (X_mouse>139) And (X_mouse<217) And (Y_mouse>265/(2/Xbios(4))) And (Y_mouse<285/(2/Xbios(4))) *Button_selected="Radioa9" Goto Found_button_Bigbox Endif If (X_mouse>232) And (X_mouse<310) And (Y_mouse>22/(2/Xbios(4))) And (Y_mouse<42/(2/Xbios(4))) *Button_selected="Radiob0" Goto Found_button_Bigbox Endif If (X_mouse>232) And (X_mouse<310) And (Y_mouse>130/(2/Xbios(4))) And (Y_mouse<150/(2/Xbios(4))) *Button_selected="Radiob4" Goto Found_button_Bigbox Endif If (X_mouse>232) And (X_mouse<310) And (Y_mouse>157/(2/Xbios(4))) And (Y_mouse<177/(2/Xbios(4))) *Button_selected="Radiob5" Goto Found_button_Bigbox Endif If (X_mouse>232) And (X_mouse<310) And (Y_mouse>184/(2/Xbios(4))) And (Y_mouse<204/(2/Xbios(4))) *Button_selected="Radiob6" Goto Found_button_Bigbox Endif If (X_mouse>232) And (X_mouse<310) And (Y_mouse>211/(2/Xbios(4))) And (Y_mouse<231/(2/Xbios(4))) *Button_selected="Radiob7" Goto Found_button_Bigbox Endif If (X_mouse>232) And (X_mouse<310) And (Y_mouse>238/(2/Xbios(4))) And (Y_mouse<258/(2/Xbios(4))) *Button_selected="Radiob8" Goto Found_button_Bigbox Endif If (X_mouse>232) And (X_mouse<310) And (Y_mouse>265/(2/Xbios(4))) And (Y_mouse<285/(2/Xbios(4))) *Button_selected="Radiob9" Goto Found_button_Bigbox Endif If (X_mouse>325) And (X_mouse<403) And (Y_mouse>22/(2/Xbios(4))) And (Y_mouse<42/(2/Xbios(4))) *Button_selected="Radioe0" Goto Found_button_Bigbox Endif If (X_mouse>325) And (X_mouse<403) And (Y_mouse>130/(2/Xbios(4))) And (Y_mouse<150/(2/Xbios(4))) *Button_selected="Radioe4" Goto Found_button_Bigbox Endif If (X_mouse>325) And (X_mouse<403) And (Y_mouse>157/(2/Xbios(4))) And (Y_mouse<177/(2/Xbios(4))) *Button_selected="Radioe5" Goto Found_button_Bigbox Endif If (X_mouse>325) And (X_mouse<403) And (Y_mouse>184/(2/Xbios(4))) And (Y_mouse<204/(2/Xbios(4))) *Button_selected="Radioe6" Goto Found_button_Bigbox Endif If (X_mouse>325) And (X_mouse<403) And (Y_mouse>211/(2/Xbios(4))) And (Y_mouse<231/(2/Xbios(4))) *Button_selected="Radioe7" Goto Found_button_Bigbox Endif If (X_mouse>325) And (X_mouse<403) And (Y_mouse>238/(2/Xbios(4))) And (Y_mouse<258/(2/Xbios(4))) *Button_selected="Radioe8" Goto Found_button_Bigbox Endif If (X_mouse>325) And (X_mouse<403) And (Y_mouse>265/(2/Xbios(4))) And (Y_mouse<285/(2/Xbios(4))) *Button_selected="Radioe9" Goto Found_button_Bigbox Endif If (X_mouse>418) And (X_mouse<496) And (Y_mouse>22/(2/Xbios(4))) And (Y_mouse<42/(2/Xbios(4))) *Button_selected="Radiod0" Goto Found_button_Bigbox Endif If (X_mouse>418) And (X_mouse<496) And (Y_mouse>49/(2/Xbios(4))) And (Y_mouse<69/(2/Xbios(4))) *Button_selected="Radiod1" Goto Found_button_Bigbox Endif If (X_mouse>418) And (X_mouse<496) And (Y_mouse>76/(2/Xbios(4))) And (Y_mouse<96/(2/Xbios(4))) *Button_selected="Radiod2" Goto Found_button_Bigbox Endif If (X_mouse>418) And (X_mouse<496) And (Y_mouse>103/(2/Xbios(4))) And (Y_mouse<123/(2/Xbios(4))) *Button_selected="Radiod3" Goto Found_button_Bigbox Endif If (X_mouse>418) And (X_mouse<496) And (Y_mouse>130/(2/Xbios(4))) And (Y_mouse<150/(2/Xbios(4))) *Button_selected="Radiod4" Goto Found_button_Bigbox Endif If (X_mouse>418) And (X_mouse<496) And (Y_mouse>157/(2/Xbios(4))) And (Y_mouse<177/(2/Xbios(4))) *Button_selected="Radiod5" Goto Found_button_Bigbox Endif If (X_mouse>418) And (X_mouse<496) And (Y_mouse>184/(2/Xbios(4))) And (Y_mouse<204/(2/Xbios(4))) *Button_selected="Radiod6" Goto Found_button_Bigbox Endif If (X_mouse>418) And (X_mouse<496) And (Y_mouse>211/(2/Xbios(4))) And (Y_mouse<231/(2/Xbios(4))) *Button_selected="Radiod7" Goto Found_button_Bigbox Endif If (X_mouse>418) And (X_mouse<496) And (Y_mouse>238/(2/Xbios(4))) And (Y_mouse<258/(2/Xbios(4))) *Button_selected="Radiod8" Goto Found_button_Bigbox Endif If (X_mouse>418) And (X_mouse<496) And (Y_mouse>265/(2/Xbios(4))) And (Y_mouse<285/(2/Xbios(4))) *Button_selected="Radiod9" Goto Found_button_Bigbox Endif If (X_mouse>46) And (X_mouse<124) And (Y_mouse>332/(2/Xbios(4))) And (Y_mouse<352/(2/Xbios(4))) *Button_selected="Togglea" Goto Found_button_Bigbox Endif If (X_mouse>139) And (X_mouse<217) And (Y_mouse>332/(2/Xbios(4))) And (Y_mouse<352/(2/Xbios(4))) *Button_selected="Toggleb" Goto Found_button_Bigbox Endif If (X_mouse>232) And (X_mouse<310) And (Y_mouse>332/(2/Xbios(4))) And (Y_mouse<352/(2/Xbios(4))) *Button_selected="Togglec" Goto Found_button_Bigbox Endif If (X_mouse>325) And (X_mouse<403) And (Y_mouse>332/(2/Xbios(4))) And (Y_mouse<352/(2/Xbios(4))) *Button_selected="Toggled" Goto Found_button_Bigbox Endif If (X_mouse>418) And (X_mouse<496) And (Y_mouse>332/(2/Xbios(4))) And (Y_mouse<352/(2/Xbios(4))) *Button_selected="Togglee" Goto Found_button_Bigbox Endif If (X_mouse>528) And (X_mouse<606) And (Y_mouse>157/(2/Xbios(4))) And (Y_mouse<177/(2/Xbios(4))) *Button_selected="Exit1" Goto Found_button_Bigbox Endif If (X_mouse>528) And (X_mouse<606) And (Y_mouse>184/(2/Xbios(4))) And (Y_mouse<204/(2/Xbios(4))) *Button_selected="Exit2" Goto Found_button_Bigbox Endif If (X_mouse>528) And (X_mouse<606) And (Y_mouse>211/(2/Xbios(4))) And (Y_mouse<231/(2/Xbios(4))) *Button_selected="Exit3" Goto Found_button_Bigbox Endif If (X_mouse>528) And (X_mouse<606) And (Y_mouse>238/(2/Xbios(4))) And (Y_mouse<258/(2/Xbios(4))) *Button_selected="Exit4" Goto Found_button_Bigbox Endif If (X_mouse>528) And (X_mouse<606) And (Y_mouse>265/(2/Xbios(4))) And (Y_mouse<285/(2/Xbios(4))) *Button_selected="Exit5" Goto Found_button_Bigbox Endif If (X_mouse>528) And (X_mouse<606) And (Y_mouse>292/(2/Xbios(4))) And (Y_mouse<312/(2/Xbios(4))) *Button_selected="Exit6" Goto Found_button_Bigbox Endif If (X_mouse>528) And (X_mouse<606) And (Y_mouse>319/(2/Xbios(4))) And (Y_mouse<339/(2/Xbios(4))) *Button_selected="Exit7" Goto Found_button_Bigbox Endif *Button_selected=" " Found_button_Bigbox: Return GfABASICzzzzzzz T T T T 6xjjjjjjj~ffff POSTSELECTXMYM STAT_EXITDEFAULTVOIDNEW_STATSELECTEDX_MOUSEY_MOUSEBUTTON_SELECTEDX_TEXTY_TEXTSTYLE CHAR_COLOR CHAR_SIZEHBORDERVBORDERTHICKINVERSEOFFSETWIDTHHIEGHTFATNESS TOGGLEA_STAT TOGGLEB_STAT TOGGLEC_STAT TOGGLED_STAT TOGGLEE_STAT EXIT1_STAT EXIT2_STAT EXIT3_STAT EXIT4_STAT EXIT5_STAT EXIT6_STAT EXIT7_STATQROUNDSEETHRU XHOT_UPPER YHOT_UPPER XHOT_LOWER YHOT_LOWER RADIO4_STATMENUSTRIPOFFSETSTRIP$SAVE_OPTIONS_AUTORESTORE_BUTTON_STATSAVE_OPTIONS_CANCEL_STAT PRESELECTTEMPBUTTON RADIO1_OLD RADIO2_OLD RADIO3_OLD RADIO4_OLD RADIO5_OLD RADIO1_NEW RADIO2_NEW RADIO3_NEW RADIO4_NEW RADIO5_NEWRBUTTONOLD_STAT CHARACTERSA TOGGLEA_STAT TOGGLEB_STAT TOGGLEC_STAT TOGGLED_STAT TOGGLEE_STAT EXIT1_STAT EXIT2_STAT EXIT3_STAT EXIT4_STAT EXIT5_STAT EXIT6_STAT EXIT7_STATPRE_SETPOST_SET RADIO4_STATSCREEN$SAVE_OPTIONS_AUTORESTORE_BUTTON_STATSAVE_OPTIONS_CANCEL_STATFOUND_BUTTON_BIGFOUND_BUTTON_BIGBOX BUTTONENDFOUND_BUTTON_TESTITFOUND_BUTTON_SAVE_MENUBIGDRAWSHAPES_BIGRADIOA1RADIOA2RADIOA3RADIOB1RADIOB2RADIOB3RADIOE1RADIOE2RADIOE3 CANCELDATA ENTERDATAFIND_BUTTON_BIG RADIO1_BIG RADIO2_BIG RADIO5_BIGDRAW_TEXT_IN_BOXRADIOC1RADIOC2RADIOC3RADIOC4RADIOC5RADIOC6RADIOC7RADIOC8RADIOC9RADIOC0RADIOA0RADIOA4RADIOA5RADIOA6RADIOA7RADIOA8RADIOA9RADIOB0RADIOB4RADIOB5RADIOB6RADIOB7RADIOB8RADIOB9RADIOE0RADIOE4RADIOE5RADIOE6RADIOE7RADIOE8RADIOE9RADIOD0RADIOD1RADIOD2RADIOD3RADIOD4RADIOD5RADIOD6RADIOD7RADIOD8RADIOD9 RADIO3_BIG RADIO4_BIGBIGBOXDRAWSHAPES_BIGBOXTOGGLEATOGGLEBTOGGLECTOGGLEDTOGGLEEEXIT1EXIT2EXIT3EXIT4EXIT5EXIT6EXIT7FIND_BUTTON_BIGBOX RADIO1_BIGBOX RADIO2_BIGBOX RADIO3_BIGBOX RADIO4_BIGBOX RADIO5_BIGBOXYOURBOXTESTITDRAWSHAPES_TESTITRADIO1RADIO2RADIO3RADIOARADIOBRADIOCRADIO4ENTERITCANCELITFIND_BUTTON_TESTIT RADIO1_TESTIT RADIO5_TESTITTEXTIT SAVE_MENUDRAWSHAPES_SAVE_MENUSAVE_OPTIONS_TITLESAVE_OPTIONS_DELAY_TITLESAVE_OPTIONS_AUTORESTORESAVE_OPTIONS_AUTORESTORE1SAVE_OPTIONS_DATASAVE_OPTIONS_GENERATESAVE_OPTIONS_DELAY_1SAVE_OPTIONS_DELAY_2SAVE_OPTIONS_DELAY_3SAVE_OPTIONS_DELAY_4SAVE_OPTIONS_DELAY_5SAVE_OPTIONS_DELAY_6SAVE_OPTIONS_DELAY_7SAVE_OPTIONS_DELAY_8SAVE_OPTIONS_DELAY_9SAVE_OPTIONS_DELAY_0SAVE_OPTIONS_DATA_GENERATESAVE_OPTIONS_AUTORESTORE_BUTTONSAVE_OPTIONS_CANCELSAVE_OPTIONS_ENTERFIND_BUTTON_SAVE_MENURADIO1_SAVE_MENURADIO2_SAVE_MENUF^F0    NOTE !!  ->MQ! F YOUR dialog boxes' name instead of 'Yourbox' &   FF'$ Hit any key when ready . . . .F8EF We simply 'echo back' the buttons' settings. BF qZSFqrFSppF!N--------------------------------------------------------------------------- D MERGE YOUR DIALOG BOX .LST ROUTINE INTO THIS PROGRAM! N 1st, place cursor on this line. Then select merge. Select YOUR boxes name. 6 Then, when your .LST file has been loaded, RUN it! N---------------------------------------------------------------------------  ( _ _P_____________________________________________________________________________ >THIS IS THE PROCEDURE THAT IS THE HEART OF DIOXs' DRAWING! _BAllow me to introduce you to the 'Draw_text_in_box' procedure. _PAll DIOX dialog boxes MUST call this routine! Merge it into your program and Fthen forget about it. Well, if you MUST know more about it . . . . oN - - - - - - - - - - - - - - - - - - - dJ ALL VARIABLES ARE IN-GOING. None are return variables or pointers etc. : Characters$ : Text that will be printed in the button. L X_text : X-coordinates of the button, in pixels.( - if rounded box) N Y_text : Y-coordinates of the button, in pixels.( - if see thru box) dF Style : Text style. See GFA manual, Deftext, for more info. rJ Char_color : Color of the text. See GFA manual, Color, for more info. L Char_size : Size of the text. See GFA manual, Deftext, for more info. )N Hborder : Horizontal border space of button, in pixels (button width). N Vborder : Vertical border space of button, in pixels (button hieght). 4 Thick : Border line thickness, in pixels. n: Inverse : If true (-1), reveres insides of button.  I$+! ! ! !!!!!! F$h!!!!%!&!'!(!)!*!FoEF Seethru=False x6 Fa%EF x@F %EF FE xZ Fa&EF xdF &EF FE E( Fa E( Fa x F(E@@F xF xЈ F(EPPF FE FE yFEFEFEF yF yTPFEFEFEF yF y@FEFEFEF yF yFE``FE@@FEF FE FE FE FE E y F-E# F zFF-E# F F,'E F(E  -F)E 6 F*E -F E E(! !!F!F F |FF`w` Efv*oM'X m HPHUBg?<JNA(m)m -:gS)@ -OK1PC#HNHx?<HNA@)@l/?<HNA)@h&@)@XЬl)@d)@`ARCpr Ѝ"QHNFALN:Hz2?< NA\pdAxr0XQ)K\NN rhVJrBjNuHz?<&NN\NݜCAp$L Qp Nۈ9lrBlJpNNۈpMNۈ9@pdAr 0Q0tr N9lNnNupealp`NuaNJHz?<&NNBWNANC2A@p222NrҌ0<NB0,rNurA9Ar`v C9Cr`rt9@9A9BNrrҌpsNB0,Nu9@N`rDҌpsNBNuC2 @ e @}bA@p222Nr,Ҍ0<NBNu pa2|a>:><|a4g RGj`a(0GVfA1G<ap??<?<NM\Nu??< NMXNu&8*:EENuHn 2$4BBNuAd RdQRB BbABJk 0NuJBjBBXNu 0Nu 2$NuE`B<gJEgEjCDEDF Fe( F dF8BCHC` F0bFHC8v` HD8HDkDуdQRBNuDdBDA@kgAр[SBk0NuJlJBk&Nu0g H@rB JkЀ[` BbNuJBj prtNuHPAJgPpr$< _Nup _NtNu&8*JEgJBgJjBEB:HC҅H@:|ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuN pNNuCDEJEgJBgJjBEBQ*HE?<>0rHGGdHGGdSWDуdi\?<>0rHGGdHGGdSWDуdiN?<>0rHGGdHGGdSW2 H@N?<,>CEdGH@0r`?<`JBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNuprt|=|   g +g -f .g20  b 0e 9b da`RF` .f 0e 9b dajSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`HJjDDDS4</NJFkSFk&aQN`Ha"FFaQL8N߾6. JgtBn Nupr$<NuJBk4<rpAC v JBgJjv-| Bb BkH>aaNRFBdL8?N߾<JBga2SF Be BgQRB`ApdR e <rRF&0xafEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`2:HQ A dGe GbFGNu G0dFGHANu~NuHnr$g4jDk( b4<J@`@[H@0Nu4<Ѐ[Nu4<NuNuAd RdQRBBkBjDBJjDNupNufJj fJAkNupNdRdRrxaAffBWHNuJjDBDA@JBfprJjDEDD@JEfvxNuaغBffAVHNuCDEaEf fDUHNu]HNuCDEaEffDftNuJBgCjtNuE`$@Hz ?<&NN\Nu NuNNNNFH"HN NN p `p ap Cpln<,(AL$I"vz x `gfURf~QjJFj4\Fk.aPHS&I.N``p???<NM\Qj&_Nu|HQ/g ??<@NAXXfNuJkp%NJl 6g Fg FfXNNu09?<%NNTNuJBfNu <r$<NuJjDNu @ 2$4BBN$ABJk0!Nu @PNPNux&k@FC Be& B dЄeNu B0dHDDdRdQRBNu&<x*<NlFC Be B djNu B0dDdSkfJAftNuAр[SBNu"l`d&6JBft&&| NuN"l`ep N c 2$F4BBN$JBgB*#E8#&#Jjh`,J]o6\`6 c 2$4BBN$*#8#&#Jk:JkִEffDbAeABJk0!NuRdQRB`JjҺBf̶fȸA` c 2$4BB*#[8#&#Nl*#8#&#JBgJjEJjL`Ja:Jo\`Jk:JkEffDbAeABJk0!NukDNuQRB`JjҺBf̶fȸA`p`pN @ddAgH`p`p9@(9@*BlNuN8CpN EN `p`pN0<9@:, INJ@g@8 FN EdbAJfE @e4r$Wf"FANuPRN:LST:AUX:CON:MID:IKB:VID:,J@fC E& B Og& Rgl Ag@ Ug2 Ig $CpNp=`pNAXJ@jNNuS@k ??<NAXNuvN)@p `H@)@prtNAHplrtNB 2pNpNۺpapaprapalpalpalpaTpaTpaTBp'a?<NNT@B){L9|0<rtNpapap9@p`pvNv`v`vj`v `v`v`v`?Aa*` Al 2l 4)lVH)lRprtNAl 2l 4HVNuAl 2l 4L VA0000000000prtN9Cp rtNAv` Av `Avl 2l 4)lVHNPaBp0,l 2Nua40,HNua*p0,l 4Nuaprt0,l 22,l 44,NuN9||BlBlrҌpsNBNu0<}N& ?<NNC`&?<NNT"@ C <}N`N @((?<NN.?<NNX@LvA HA HNuNup9@HA)A,N. FN @e024E$ Bb5B5A6CC5CK5CAB008:Dk`Ek\00<,>,SFSGFnHGnDDDk9DBlDEk9EBlFcllGcll0,lb 0,lcNu"pmrtA)HA)HNpNHHPN.4 _:8><DbFEbGCHP@dʾAdBD2ƞE29|C???FF22N23BRG0@\@N"2)IN"(* 9AJA)H@@[000][ˈN Evz`* [g" ]g |g QSz` zQSpQ][ɈN Dvx`* [g" ]g |g QSx` xQSpQ]Bp4NۈHNu*( INA)H @depd ae zb QB DNA\)H @ e` ae zb \gQBA BhNpZNۈA BP"`#|}NA"H0,tg"Hg \f`A\fS A ENAR@H`2QNu@9@JpNNۈr|<N @xepw2A$JBjDFHB t`0QBl9F)lVTAtp 9| N2(g"P@g2RADAH""l`r2oZAe 1@#)I`Nuk1@Nup NN"l`dpNAtrdJhk\QpaNH ld$l`"Hg: k&@0+R`g k#&@0+S@H3 Q&f)I`LNu?<?<NAXJgJgNAH@B pNA NuApNNF$N$BS@kH2QNupC ұd"X0Pg"RA$D#Nu"X0NuNJ@gpNu _0HpN _0HpNp"_0HqN p"_0HqN E ұeHHQ0)N$_$ZR@H`2QNu$Y0gHR@@"D%$X0P2g# R@%NupE $ $X0dP.gRG,D%pr Y2dP.gRG,D!p4Ae4v`VfANuNWHNuNVHNu Ihd*N$E$RR@H`2QˈN ENu Ihd"*N$E8*$R`"QˈN ENu2)A IJAfr4(Ae*RBBc0*SA?N$E$R`QˈN ENup`(* 0(iN$E 4R`Q$D 4R`QˈN DN ENua NuN IHPg"B  g &gNJBjt BNut`Rptr ae OgT Xgj HgSRB ae Fb$0k  c_  c b退`tSJBkNRB0 b b瀀`RB0 fрd`?Hl?<GNAPA"HJf SNr ,* N& ( EN C"Sj|AcJ@fCAHPBHQ?NA\ _JjNNuH&NրNjNu?r`??, N$F Z268SDĒDcCc2Ac0`QNuNq Y Qf*d ЀЀ 2$4BBNuHRp` HRpJQfpNNq Y QfdЀЀ 0NuNN&Nq Y Qfd ЀЀNuNNJ$_& Y Qf d փփABJk 0NNN$_& Y Qfdփփ!8NNN$_& if"QdփփHRN*NN~,Nq8DRzXEEg"7PNqR$HBJBgpNJgJigp`eetЂ`"ЀeЁdp`ЀeЀe"Ѕe$W.H@@NNL"2` NqR YEjrd0` SjNp"X4g S`"QNuN**<Nh`"2QjNuxdtdD& pk<HCJCf2 IN|d& xfN"Nud & f2Nup@Nxd& tkHCJCfN*@"@Ed ddeƐdH@J@f  @  "002Nu" KC`e N`d \N l\Ӭ\ NupNd d3 d# d# # d# # # # d# # # # # # # # dB` # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # QNudd2d"d""d""""d""""""""dB` """"""""""""""""""""""""""""""""QNu??<NMXNu?k?<NM"UAf J@fH@NuDW?<NMXNuPj0,lf$J,nk l*fp?Np N9|nNA0,l2J,jk 0"fZRAR@ 0"g 0 f` 0 g 0,f9@lTll`BllA"H"g"A4`Q"AA 0! NuS@R@ 0 g 0,f9@lRll`R@ 0 fQj`NNBll?<?<?<NM\NHQN&g ! ge l*g l*gpNNu<,*?Hj\F FfN`H FfN`RGFc8>`4A g6 g0 g` gTlfelhgFf2pRGRFa`a,` `?~ap ap a 0NuCpE`bf`FgRGJGgRSGSFFgCpE`Yf`Nua@Jf gH@ fa(@ fza0 b @ Ee0Nu?<?<NMXNur9A(HNLNu0,^2,`NzEfpaRppaNAEg0PaľEfa4RE`p a2a*Efp a(NldeS@f lbfSl`9Ab9FdNupapqr`p`C l ", Ⲭ dfѬ SA 0! Nup"N"p`tdbDA0Hg<<R@f|0HN*JFk*HQ/??<?NAXfX ENuJkpNp`p`\F( &I.` ??<NMXJ[j E&DNuak NupNuakfpNupNtddA0oH?<?B?<BNA Jk.,?<?B?<BNA *kBg?/?<BNA JkNuN<(`|HP?N8<pg2JFg W"X2@e2<A`QNCpR@ 1 fA 0! "_N*p`pNu)H9@Jp4NۈP'J&f H LNu P&NuQ'` J,'fJ,&gHA#ȇeC! B,&LNu-W)K20, 8k8@ gJl&f"Nu , 8g"P 8 @/, 8N  8fQ 8J,'gNupB <``L@ H)l26)z @W , Jf`CfSHj-D@Hd0H@H 0H@0`fSC\fS , @a"C\fApNNNrHP?< NA\NuH@aa/a a Nu@0 9c^Nu| PC>$Error # ][Abort]\f.B &lX)K\)ld` lp ,BQjNup(NVtHB9BL@@TAt )l g.A( f hgSASAgRB`9BJNۈSAgNu)l g,vARC( g9CJ9|Lp!,Nۈ FPeNu\A JpBQA/)H )l gBlJpNۈB Aprt0 0BBB R@ @efA000 0PB0 *00 000\0X0 *0000 0P0BX0, *@00p1| 1|QBX0 $HTH0P &0 *0,NupNSk [0NupNuHPaH8 _&X Pf/|~ K!zag @ ep 24C"2 S@ػ Td BTA3A0C4$I2a222B"0@2A\xvaRg<2#M 4B3BS@ -f ػ Td>BAAb8RGRC`3RSG5GC5C J1DcaRF F e`RG GcdNuXASF1F41R 1h4 x1EDgVA)H)H 9|J?<NNTU@g,ACg dRhdRh(gpL8Nۈp>L8NAJ0?C bL000zH?A/.)HpNۈLrHH/>Bl/,ff.f.ffNu l /.g&, ^`D&, N`>&, R`8&, V`2&, Z`,2,/4WAARA0,/6A hfRAS@f9A/,&, Jo ? CN 0`@k Ap0(/.NuA Nu)G RHA)A v9@ zNup)@JphNۈLtH &JKBCH .A/~0 1PP1P1PA L? &<@>AFG0000X0000X0000X0000C ~AJ0g0  pi, Nۈ"F QNu?S@k&8L &LeBLe,C`(A? fHa)_ 2TNuBlJ`l *bl ,bH .N0S@k@>A PC/~. 0(JgRJ)@g1@CJ2fP2HP" &" *pdNۈ0,r W1@AJ00 piNۈ9|L@NpiNۈ _CL""pe`9| LpiNۈ9|LphNۈLtH 2H/`SBSC@AHH/jP 6P/^P0<rtNpapapapaL/jr`S@k6@ A 9PJg8BPpfNۈpgNۈ9| LphNۈ9@JfdBlJa\Q 6BB 2`NuS@k @ A 9pJg a$Bp`NuHS&I. FV 7p&N9l/h8,:,L/d4,pĴ@cS@9@p4,rŴAcBSA9Ar`8pJ, 7fnJ/^k0 Eg$2,/h pg  qfH9A/hpjN۾`N -DClN -DCrN -DCxN -DC~N -DCN -DCN -DCN -DCN -DCN -DCDN -DCN -DCN -DCN -DCN -DCNpCNtAfNAjNAl 0ANF$VHfN6?<NNTU]HfN6BA @0 -A퀢N - "-NXpNpNpNpNN6A P0 -A퀢N - "-NXpNpNpNp N - "-NXA혊 0ANJBfN7Z?<NNTUWHfN7A P0 -A퀢N - "-NXpNpNpNp NN7Z?<NNTSWHfN7ZA @0 -A퀢N - "-NXpNpNpNpNNAN ANJBgN7|`N22NrpNFCN$HPN Hello there!"_NfN7NAiN AjNpNFCN$HPN Name it "_NfN8pNpNFCN$HPN Options"_NfN84pNpNFCN$HPN Load "_NfN8 <ЍNHARN A C흸N*NDAT$HP <ЍNHASHN HmAvN AnN pNFCN$HPN Save "_NfN>AiNN ANJBfN9N>NS(Save_options_delay_4)(Save_options_autorestore_button)(Save_options_data_generate)4HP HmTN(Save_options_report)_"_NJ^HfN9AN HmTN!(Save_options_autorestore_button)"_NJ^HfN:PA훜 0N:TBmHmTN(Save_options_data)e"_NJ^HfN:A훺 0BmHmTN(Save_options_generate)C"_NJ^HfN:BmA 0HmTN(Save_options_data_generate)"_NJ^HfN;6A훺 0A 0HmTN(Save_options_delay_0n"_NJ^HfN;nBHmTN(Save_options_delay_1n"_NJ^HfN;+|HmTN(Save_options_delay_2n"_NJ^HfN;+|HmTN(Save_options_delay_3n"_NJ^HfN<"+|HmTN(Save_options_delay_4n"_NJ^HfN<^+|HmTN(Save_options_delay_5n"_NJ^HfN<+|HmTN(Save_options_delay_6n"_NJ^HfN<+|HmTN(Save_options_delay_7n"_NJ^HfN=+|HmTN(Save_options_delay_8n"_NJ^HfN=N+|HmTN(Save_options_delay_9n"_NJ^HfN=+| <ЍNHARN A C흸N*NLST$HP <ЍNHASHN +|AC  "AN/?<NNTN&<x*<N4pJBgp$VHfN>@HmACN N>AN/?<NNTN&<x*<N4pJBgp$VHfN>HmAVN N>ANF$VHfN>HmAN AC  "AN NHAnN pNFCN$HPN Create "_NfN?fBm AiN NAjNANF/ApNNzN~pJBgp$VHfN?fAu@N pNFCN$HPN Rename "_NfN?A 0AiN NAjNANF/ApNNzN~pJBgp$VHfN?Au@N pNFCN$HPN Selected"_NfN@JAhNH ANN/A"_NN NrLAN lLAN lLAN lLAN lLA큀N lLAN lLApN lLAjN lLArN lLAlN lLAfN lLA`N lLAZN l"_AN A퀄N fA퀊N fA퀐N fAPN fATN fAZN fA`N fAfN fAlN fArN fA.N AZNzNfNVAT 0NVBmXA`NzNfNVAZ 0NVBm^AZNAZNA`NA`N?<NNTN&<x*<N4pJBgp/ArN&<x*<N4pJBgp$VHfNWvAr @0NW?<NNTN&<x*<N4pJBgp/ArN&<x*<N4pJBgp$VHfNWAr P0ArN&<x*<N4fNX0A퀐 0A퀊 0A퀄 0NY ArN&<x*<N4fNXA퀐 0A퀊 0A퀄 @0NY ArN&<x*<N4fNXA퀐 0A퀊 0A퀄 0NY ArN&<x*<N4fNY A퀐 `0A퀊 @0A퀄 0?<NNTUWHfNY@BmNYNA후 0AjNAZNNhHANL8Nh&<x*<NlA`NA퀄NA`NNlHA퀐NL8NhHApNL8NhHANL8Nh&<x*<NlA후NNlAfNANNA퀊NNNAZNNlAjNNlANNlH <r$<L8NhAlNA퀄NA`NNlApNNlANNl&<x*<NlA후NNlArNAlNNAfNNpNArNNpNANzN~fNb&A큀NJBfN[&AlNNpNN[8pNpNpNpNۺATNJBfN]AZNJBfN\AjNAZNNhH <r$<L8NhN/A퀄NA`NNlHA퀐NL8NhHApNL8NhH <r$<L8NhN"N ANNA퀊NNNAZNNlAjNNl&<x*<NlN/A퀄NA`NNlApNNl&<x*<NlN"N^N]AjNAZNNhH <r$<L8NhN/A퀄NA`NNlHA퀐NL8NhHApNL8NhH <r$<L8NhN"N ANNA퀊NNNAZNNlAjNNl&<x*<NlN/A퀄NA`NNlApNNl&<x*<NlN"NdN_AZNJBfN^AjNAZNNhH <r$<L8NhN/A퀄NA`NNlHA퀐NL8NhHApNL8NhH <r$<L8NhN"N ANNA퀊NNNAZNNlAjNNl&<x*<NlN/A퀄NA`NNlApNNl&<x*<NlN"NN_AjNAZNNhH <r$<L8NhN/A퀄NA`NNlHA퀐NL8NhHApNL8NhH <r$<L8NhN"N ANNA퀊NNNAZNNlAjNNl&<x*<NlN/A퀄NA`NNlApNNl&<x*<NlN"NjAP 0ANAPNATNJBfNaAjNAZNNhHAPNL8NhN/A퀄NA`NNlHA퀐NL8NhHApNL8NhHAPNL8NhN"N ANNA퀊NNNAZNNlAjNNlAPNNlN/A퀄NA`NNlApNNlAPNNlN"N^NbAjNAZNNhHAPNL8NhN/A퀄NA`NNlHA퀐NL8NhHApNL8NhHAPNL8NhN"N ANNA퀊NNNAZNNlAjNNlAPNNlN/A퀄NA`NNlApNNlAPNNlN"NN`NqAZNJBfNbpNAZN/A`N"N ANPA큀NJBfNbA`N?AfN?AlN?ArN?A." NBA`N?AfN?Hm.p _"NbNcA큀N/ANzN~pJBgp$VHfNcpNNcbA큀N/ANzNpJBgp$VHfNcDpNNcbA큀NF$VHfNcbpNAZN/A`N"N ANPpNAN/AjNAZNNhHAPNL8Nh"_NAN/A퀄NA`NNlHA퀐NL8NhHApNL8NhHAPNL8Nh"_NAN/ANNA퀊NNNAZNNlAjNNlAPNNl"_NAN/A퀄NA`NNlApNNlAPNNl"_NN NrLAN lLAN lLAN lLAN lLA큀N lLAN lLApN lLAjN lLArN lLAlN lLAfN lLA`N lLAZN l"_AN A퀄N fA퀊N fA퀐N fAPN fATN fAZN fA`N fAfN fAlN fArN fA.N AZNAZNA`NA`N?<NNTN&<x*<N4pJBgp/ArN&<x*<N4pJBgp$VHfNfDAr @0Nf?<NNTN&<x*<N4pJBgp/ArN&<x*<N4pJBgp$VHfNfAr P0ArN&<x*<N4fNfA퀐 0A퀊 0A퀄 0NgArN&<x*<N4fNgPA퀐 0A퀊 0A퀄 @0NgArN&<x*<N4fNgA퀐 0A퀊 0A퀄 0NgArN&<x*<N4fNgA퀐 `0A퀊 @0A퀄 0AN/AjNAZNNhHANL8Nh"_NAN/A퀄NA`NNlHA퀐NL8NhHApNL8NhHANL8Nh"_NAN/ANNA퀊NNNAZNNlAjNNlANNl"_NAN/A퀄NA`NNlApNNlANNl"_NN NrNH?<NNTSWHfNiVA HP <ЍNHAN Ni?<NNTUWHfNiA HP <ЍNHA/N NHN NrAN fAN fAN fAN fA.N N\?<NNTU]HfNjN% 4HP <r$<H <r$<HtH <r$<H <r$<H <r$<H <r$<H <r$<HtH <ЍNH <ЍNH <ЍNH <ЍNHAUN NkN% 4HP <r$<H <r$<HtH <r$<H <r$<H <r$<H <r$<H <r$<HtH <ЍNH <ЍNH <ЍNH <ЍNHAUN ?<NNTUWHfNlpNpNpNp NNl0pNpNpNpNN8prNNEnter BUTTONS' procedure name:NN8prNAFCN*AFr NN?ABCEDFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_4C4N*BmA 0AFNNANHm4HmFAN/p""_NH"_NJWHfNmNzHxN.ERROR!|ENTER ONLY|A..Z, a..z, 0..9, underline!HPN OK|Cancelr"_ NANN\AFNN&<x*<NlANN`@NqAN&<x*<N4fNmNiNnAN&<x*<N4fNnNprAFCfN*Bm+| -_HfNpHm Af"_NpJBgp/Hmf -CN$"_NpJBgp$VHfNp Hm Af"_NfNo&HxNUNAME DUPLICATION ERROR!|The dialog box uses|this name. Please enter|a different name.4HPN OK|Cancelpr"_ NANNoHxNUNAME DUPLICATION ERROR!|Another button uses|this name. Please enter|a different name.HPN OK|Cancelr"_ NANAN&<x*<N4fNoNiNp AN&<x*<N4fNp AN NprR`ANF$VHfNpr+mR+mAN A 0Bm|A p0A H0AjNAlNNAfNNpNANNNzN NrAN fAN fAN fA.N N\?<NNTU]HfNrNM HP <r$<H <r$<HtH <r$<H <r$<H <r$<H <r$<H <r$<HtH <ЍNH <ЍNH <ЍNH <ЍNHAUN NsDNM HP <r$<H <r$<HtH <r$<H <r$<H <r$<H <r$<H <r$<HtH <ЍNH <ЍNH <ЍNH <ЍNHAUN ?<NNTUWHfNsxpNpNpNp NNspNpNpNpNBmAC  "002AC  "002N8prNNEnter text line :4NN8prNAR 0?<NNTJWHfNt"AR 0ARN/Ap"NHmpp"N"_NJ^HfNtHxN7Illeagal character.|Do NOT use the|double quote!| ( HPp"N"_NHPp)N"_NHPN OK|Cancelr"_ NANAN&<x*<N4fNtNpNAjNAlNNAfNNpNANNNzN NrAjNANF$VHfNujA N AxNJBfNuNzBmAnN N\pN$VHfNupNA킂NNuBmA킂N&<x*<N4pJBgp/A킂N&<x*<N4pJBgp$VHfNvA~NJBfNvR -"-NXBmANANNvA~ 0 - "-NXAN&<x*<NNANAN A킂N&<x*<N4pJBgp/A킂N&<x*<N4pJBgp$VHfNwxAxNJBfNw. -"-NXBm|ANANNwn - "-NXAx 0AN&<x*<NNANAN A킂N&<x*<N4fNwA~N A킂N&<x*<N4fNwA~BN A킂N&<x*<N4fNwA}N A킂N&<x*<N4fNx(A}N A킂N&<x*<N4fNxTA}.N A킂N&<x*<N4fNxA}jN ANHNNL8NlpJBgp/ANHNNL8NlpJBgp$VHfNzAjNNNANNANAN&<x*<NpJBgp/AN&<x*<N~pJBgp$VHfNyjA 0AN&<x*<NfNyA 0A~NJBfNyAN&<x*<NNANAxNJBfNz AN&<x*<NNANHmpANHANHAfNHAlNHANHAjNHApNHANHAhNH < ЍNH <&ЍNH <,ЍNH <2ЍNHAUN NSWHgNz`NzN Nr?<NNTNzN4pJBgp/AlN&<x*<NpJBgp$VHfN{BAlNN}&?<NNTNzN4pJBgp/AlN&<x*<N4pJBgp$VHfN{BmpN}&?<NNTN&<x*<N4pJBgp/AlN&<x*<NpJBgp$VHfN|AlNN}&?<NNTN&<x*<N4pJBgp/AlN&<x*<N4pJBgp$VHfN|fBmpN}&?<NNTN&<x*<N4pJBgp/AlN&<x*<N4pJBgp$VHfN|BmpN}&?<NNTN&<x*<N4pJBgp/AlNzN4pJBgp$VHfN}&Al 0N NrApN&<x*<NfN}bApNAN N NrApNzN~fN}ApNAN N NrAjN&<x*<NfN}AjNAN N NrAjNzN~fN}AjNAN N NrAN&<x*<NfN~:ANAN N NrANzN~fN~jANAN N NrNpNFN& arrow was on when the left-mouse button was clicked.NN8N <NppNpNpNpNN8NpN NProcedure Find_button_A NN" (X_mouse,Y_mouse,Button_selected)NN8NProcedure Find_button_A NN" (X_mouse,Y_mouse,Button_selected)N+| -_HfNAN ArNzNlfNxHmpANHANHAfNHAlNHANHAjNHApNHANHAhNH < ЍNH <&ЍNH <,ЍNH <2ЍNHAdN pN N If (X_mouse>A NNNN) And (X_mouseA&NNNN) And (Y_mouseA NNNN) And (X_mouse<A,NNNN) And (Y_mouse>mA&NNNN) And (Y_mouseA횲NJBfNtHAN BmA CN*Bm@N> <r$<HAN A횲 0N Fill_2_164CN*A< 0HmBN Fill_2_174"_NfNA횸NJBfNtHAN BmA CN*Bm@N <r$<HAN A횸 0N Fill_2_174CN*A< 0HmBN Fill_2_184"_NfNA횾NJBfNJtHAN BmA CN*Bm@N <r$<HAN A횾 0N Fill_2_184CN*A< 0HmBN Fill_2_194"_NfNHANJBfNtHAN BmA CN*Bm@NH <r$<HAN A 0N Fill_2_194CN*A< 0HmBN Fill_2_204"_NfNANJBfNtHA,N BmA CN*Bm@N <r$<HA,N A 0N Fill_2_204CN*A< 0HmBN Fill_2_214"_NfN¤ANJBfNTtHAJN BmA CN*Bm@N¤ <r$<HAJN A 0N Fill_2_214CN*A< 0HmBN Fill_2_224"_NfNRANJBfNtHAhN BmA CN*Bm@NR <r$<HAhN A 0N Fill_2_224CN*A< 0HmBN Fill_2_234"_NfNANJBfNðtHA N BmA CN*Bm@N <r$<HA N A 0N Fill_2_234CN*A< 0HmBN Fill_2_244"_NfNĮANJBfN^tHA N BmA CN*Bm@NĮ <r$<HA N A 0N Fill_2_244CN*A< 0HmBNFill_3_1"_NfNXANJBfN tHA N BmA CN*Bm@NX <r$<HA N A 0NFill_3_1CN*A< 0HmBNFill_3_2"_NfNANJBfNŴtHA N BmA CN*Bm@N <r$<HA N A 0NFill_3_2CN*A< 0HmBNFill_3_3"_NfNƬANJBfN^tHA N BmA CN*Bm@NƬ <r$<HA N A 0NFill_3_3CN*A< 0HmBNFill_3_4"_NfNVANJBfNtHAN BmA CN*Bm@NV <r$<HAN A 0NFill_3_4CN*A< 0HmBNFill_3_5"_NfNANJBfNDztHA:N BmA CN*Bm@N <r$<HA:N A 0NFill_3_5CN*A< 0HmBNFill_3_6"_NfNȪANJBfN\tHAXN Bm A CN*Bm@NȪ <r$<HAXN A 0NFill_3_6CN*A< 0HmBNFill_3_7"_NfNTA NJBfNtHAvN BmA CN*Bm@NT <r$<HAvN A 0NFill_3_7CN*A< 0HmBNFill_3_8"_NfNANJBfNɰtHAN BmA CN*Bm@N <r$<HAN A 0NFill_3_8CN*A< 0HmBNFill_3_9"_NfNʨANJBfNZtHAN BmA CN*Bm@Nʨ <r$<HAN A 0NFill_3_9CN*A< 0HmBN Fill_3_104"_NfNVANJBfNtHAN Bm"A CN*Bm@NV <r$<HAN A 0N Fill_3_104CN*A< 0HmBN Fill_3_114"_NfNA$NJBfN˴tHAN Bm(A C N*Bm@N <r$<HAN A$ 0N Fill_3_114C N*A< 0HmBN Fill_3_124"_NfN̲A*NJBfNbtHA N Bm.A CN*Bm@N̲ <r$<HA N A* 0N Fill_3_124CN*A< 0HmBN Fill_white"_NfN`A0NJBfNtHA*N Bm4A CN*Bm@N` <r$<HA*N A0 0N Fill_whiteCN*A< 0HmBNFill_transperent"_NfNA6NJBfNtHANN Bm:A CN*Bm@N <r$<HANN A6 0NFill_transperentCN*A< 0tgNHmBNFill_2_1"_NgNHmBNFill_2_2"_NgNHmBNFill_2_3"_NgNHmBNFill_2_4"_NgNHmBNFill_2_5"_NgNHmBNFill_2_6"_NgNHmBNFill_2_7"_NgNHmBNFill_2_8"_NgNHmBNFill_2_9"_NgNHmBN Fill_2_10"_NgNHmBN Fill_2_11"_NgNHmBN Fill_2_12"_NgNHmBN Fill_2_13"_NgNHmBN Fill_2_14"_NgNHmBN Fill_2_15"_NgNHmBN Fill_2_16"_NgNHmBN Fill_2_17"_NgNHmBN Fill_2_18"_NgNHmBN Fill_2_19"_NgNHmBN Fill_2_20"_NgNHmBN Fill_2_21"_NgNHmBN Fill_2_22"_NgNHmBN Fill_2_23"_NgNHmBN Fill_2_24"_NgNHmBNFill_3_1"_NgNHmBNFill_3_2"_NgNHmBNFill_3_3"_NgNHmBNFill_3_4"_NgNHmBNFill_3_5"_NgNHmBNFill_3_6"_NgNHmBNFill_3_7"_NgNHmBNFill_3_8"_NgNHmBNFill_3_9"_NgNHmBN Fill_3_10"_NgNHmBN Fill_3_11"_NgNHmBN Fill_3_12"_NgNHmBN Fill_white"_NgNHmBNFill_transperent"_NgNpNp`A arrow was on when the left-mouse button was clicked.NN8N <NppNpNpNpNN8NpN NProcedure Find_button_A NN" (X_mouse,Y_mouse,Button_selected)NN8NProcedure Find_button_A NN" (X_mouse,Y_mouse,Button_selected)N+| -_HfNRAN ArNzNlfNRHmpANHANHAfNHAlNHANHAjNHApNHANHAhNH < ЍNH <&ЍNH <,ЍNH <2ЍNHAdN pN N If (X_mouse>A NNNN) And (X_mouseA&NNNN/(2/Xbios(4))) And (Y_mouseA NNNN) And (X_mouse<A,NNNN) And (Y_mouse>mA&NNNN/(2/Xbios(4))) And (Y_mouse arrow was on when the left-mouse button was clicked.NN8N <NppNpNpNpNN8NpN NProcedure Find_button_A NN" (X_mouse,Y_mouse,Button_selected)NN8NProcedure Find_button_A NN" (X_mouse,Y_mouse,Button_selected)N+| -_HfNeXAN ArNzNlfNePHmpANHANHAfNHAlNHANHAjNHApNHANHAhNH < ЍNH <&ЍNH <,ЍNH <2ЍNHAdN pN N If (X_mouse>A NNNN) And (X_mouseA&NNNN*Xbios(4)) And (Y_mouseA NNNN) And (X_mouse<A,NNNN) And (Y_mouse>mA&NNNN*Xbios(4)) And (Y_mouse AutoRes <--------|Do you want your creation|to automatically adjust for|HIGH & MEDIUM resolutions ?8HPNYES|NOr"_ NANAN&<x*<N4fNA 0N"BmNHN NrAN A CFN*AN CA8N@CA>N@C AlN@CArN@CA~N@CAxN@C$AN@C*AN@C0AN@C6AN@CN$CpN* -lClNAN -lCrNAN -lC~NAfN -lCxNAlN -lCNAN -lCNAjN -lCNApN -lCNAN -lCNAhN -lCNArN -lCNA N -lCNA&N -lCNA,N -lCNA2NAN RRl` -J^HfNS+mAnN N Nr -PS^HfNSP -PC&N$HPNpbox"_NfN SPAnN N NrLA`N l"_ANN A홪N fA홰N fABN AZN AힴN AힺN AN AN AfN AN AN AN AN AHm.p(N"_NHPAퟞ"_NHPp)N"_NC.N*Hm.p(N"_NHPAퟤ"_NHPp)N"_NC.N*Hm.p(N"_NHPAퟪ"_NHPp)N"_NC.N*Hm.p(N"_NHPAퟰ"_NHPp)N"_NC.N*Hm.p(N"_NHPAퟶ"_NHPp)N"_NC.N*Hm.p(N"_NHPA퟼"_NHPp)N"_NC.N*Hm.p(N"_NHPA"_NHPp)N"_NC.N*Hm.p(N"_NHPA"_NHPp)N"_NC.N*Hm.p(N"_NHPA"_NHPp)N"_NC.N*Hm.p(N"_NHPA"_NHPp)N"_NC.N*Hm.p(N"_NHPA"_NHPp)N"_NC.N*Hm.p(N"_NHPA"_NHPp)N"_NC.N*A`N/A."_NA홪NHA홰NH 04NpN N @rAFNN(-1)NpN N Let RadioArNNN_old$=p"NNAFNp"NNNpN N ElseNpN N @%AFNN(0)(NpN N EndifNN8N If Instr(Preselect$,p"NNp(NAFNp)Np"NNN)>04NN8N @IAFNN(-1)NN8N Let Radio!ArNNN_old$=p"NNAFNp"NNNN8N ElseNN8N @eAFNN(0)(NN8N Endif!NArN&<x*<N4fNA혜 0ArN&<x*<N4fN&A혢 0ArN&<x*<N4fNVA혨 0ArN&<x*<N4fNنA혮 0ArN&<x*<N4fNٶA혴 0R`B+|Bm -_HfNܲAN ArN&<x*<N4fNܪA혺 0pN N If Instr(Preselect$,p"NNp(NAFNp)Np"NNN)>04NpN N @rAFNN(-1)NpN N Let AFNN _stat=trueNpN N Let AFNN_stat$=rp"NNAFNp"NNNpN N ElseNpN N @%AFNN(0)sNpN N EndifNN8N If Instr(Preselect$,p"NNp(NAFNp)Np"NNN)>04NN8N @IAFNN(-1)NN8N Let AFNN _stat=trueNN8N Let AFNN_stat$=rp"NNAFNp"NNNN8N ElseNN8N @eAFNN(0)sNN8N Endif!NR`+| -_HfN^AN ArN&<x*<N4fNVA혺 0pN N @4AFNN(0)4NN8N @AFNN(0)NR`^+| -_HfNAN ArN&<x*<N4fNpN N @AFNp(NAhNp)NNN8N @AFNp(NAhNp)NNR`X+| -_HfNAN ArN&<x*<N4fNA~ 0pN N @AFNp(NAhNp)NNN8N @AFNp(NAhNp)NNR`JpN N Showm!NpN N DoNN8N Showm NN8N DoNA~NJBfNhpN N If Inkey$=Chr$(13)NpN N Default=TrueNpN N ElseNpN N Default=False4NpN N Endif=NN8N If Inkey$=Chr$(13)NN8N Default=TrueNN8N ElseNN8N Default=False!NN8N EndifaNpN N If Mousek=14NpN N Mouse Xm,Ym,VoidNpN N @Find_button_!A NN (Xm,Ym,*Button$)!NN8N If Mousek=1nNN8N Mouse Xm,Ym,VoidNN8N @Find_button_oA NN (Xm,Ym,*Button$)tNA혜NJBfNRpN N If Instr(p"NNN8N If Instr(p"NN+| -_HfNNAN ArN&<x*<N4fNHpN p(NAFNp)NN8p(NAFNp)NR`pN p"NNp,Np"NNp(Np"NNN +Button$+4p"NNp)Np"NNN)>04NpN N @Radio1_A NN# (Button$,Radio1_old$,*Radio1_new$)"NpN N Radio1_old$=Radio1_new$nNpN N EndifoNN8p"NNp,Np"NNp(Np"NNN +Button$+,p"NNp)Np"NNN)>04NN8N @Radio1_A NN# (Button$,Radio1_old$,*Radio1_new$)"NN8N Radio1_old$=Radio1_new$uNN8N EndifiNA혢NJBfN.pN N If Instr(p"NNN8N If Instr(p"NN+| -_HfN*AN ArN&<x*<N4fN$pN p(NAFNp)NN8p(NAFNp)NR`pN p"NNp,Np"NNp(Np"NNN +Button$+$p"NNp)Np"NNN)>04NpN N @Radio2_A NN# (Button$,Radio2_old$,*Radio2_new$)"NpN N Radio2_old$=Radio2_new$nNpN N EndifoNN8p"NNp,Np"NNp(Np"NNN +Button$+,p"NNp)Np"NNN)>04NN8N @Radio2_A NN# (Button$,Radio2_old$,*Radio2_new$)"NN8N Radio2_old$=Radio2_new$uNN8N EndifiNA혨NJBfN pN N If Instr(p"NNN8N If Instr(p"NN+| -_HfNAN ArN&<x*<N4fNpN p(NAFNp)NN8p(NAFNp)NR`pN p"NNp,Np"NNp(Np"NNN +Button$+$p"NNp)Np"NNN)>04NpN N @Radio3_A NN# (Button$,Radio3_old$,*Radio3_new$)"NpN N Radio3_old$=Radio3_new$nNpN N EndifoNN8p"NNp,Np"NNp(Np"NNN +Button$+,p"NNp)Np"NNN)>04NN8N @Radio3_A NN# (Button$,Radio3_old$,*Radio3_new$)"NN8N Radio3_old$=Radio3_new$uNN8N EndifiNA혮NJBfNpN N If Instr(p"NNN8N If Instr(p"NN+| -_HfNAN ArN&<x*<N4fNpN p(NAFNp)NN8p(NAFNp)NR`pN p"NNp,Np"NNp(Np"NNN +Button$+$p"NNp)Np"NNN)>04NpN N @Radio4_A NN# (Button$,Radio4_old$,*Radio4_new$)"NpN N Radio4_old$=Radio4_new$nNpN N EndifoNN8p"NNp,Np"NNp(Np"NNN +Button$+,p"NNp)Np"NNN)>04NN8N @Radio4_A NN# (Button$,Radio4_old$,*Radio4_new$)"NN8N Radio4_old$=Radio4_new$uNN8N EndifiNA혴NJBfNpN N If Instr(p"NNN8N If Instr(p"NN+| -_HfNAN ArN&<x*<N4fNpN p(NAFNp)NN8p(NAFNp)NR`pN p"NNp,Np"NNp(Np"NNN +Button$+$p"NNp)Np"NNN)>04NpN N @Radio5_A NN# (Button$,Radio5_old$,*Radio5_new$)"NpN N Radio5_old$=Radio5_new$nNpN N EndifoNN8p"NNp,Np"NNp(Np"NNN +Button$+,p"NNp)Np"NNN)>04NN8N @Radio5_A NN# (Button$,Radio5_old$,*Radio5_new$)"NN8N Radio5_old$=Radio5_new$uNN8N EndifiNA혺NJBfN+| -_HfNAN ArN&<x*<N4fNpN N If Button$=np"NNAFNp"NNNpN N If $AFNN_stat!NpN N @AFNN(0)aNN8N If Button$=p"NNAFNp"NNNN8N If tAFNN_stat!NN8N @tAFNN(0)aNA~NJBfNpN N @AFNN(-1)NpN N @AFNN(0))NN8N @ AFNN(-1)NN8N @ AFNN(0))NpN N Let AFNN _stat=FalseBNpN N Let AFNN_stat$=ap"NNp"NNNN8N Let AFNN _stat=False$NN8N Let AFNN_stat$=ap"NNp"NNNArN&<x*<N4fNpN N Let Stat_exit=FalseNN8N Let Stat_exit=False=NpN N ElseNpN N @%AFNN(-1)NpN N Let AFNN _stat=TrueNpN N Let AFNN_stat$=rp"NNAFNp"NNNN8N ElseNN8N @eAFNN(-1)NN8N Let AFNN _stat=TrueNN8N Let AFNN_stat$=rp"NNAFNp"NNNArN&<x*<N4fNpN N Let Stat_exit=TrueNN8N Let Stat_exit=TruetNpN N EndiftNpN N Endif!NN8N EndifnNN8N EndifiNR`pN N Endif4NpN N Exit if N8N Endif NN8N Exit if +|Bm -_HfNAN ArN&<x*<N4fNA~ 0ArN&<x*<N4pJBgp/ArN&<x*<N4pJBgp$VHfNpN N (Button$=p"NNAFNp"NNN) Or 4N8N (Button$=tp"NNAFNp"NNN) Or R`A~NJBfNpN NDefault"NN8NDefaulteNN"pN NFalse4NN8NFalseN+|Bm -_HfNAN ArN&<x*<N4fNpN N Exit If (Button$=p"NNAFNp"NNp)NNN8N Exit If (Button$=tp"NNAFNp"NNp)NNR`,pN N Pause -NNNNpN N LoopNN8N Pause -NNNNN8N LoopNpN N If Stat_exitNN8N If Stat_exitN+| -_HfNAN ArN&<x*<N4fNpN N Temp$=Temp$+p"NNp(Np"NNp+NAFNN_stat$+4p"NNp)Np"NNNN8N Temp$=Temp$+p"NNp(Np"NNp+NAFNN_stat$+sp"NNp)Np"NNNArNzN~pJBgp/ArN&<x*<NpJBgp/ArNNCNHArNL8NlpJBgp$VHfNArNN/ArNCNFpN N Temp$=Temp$+p"NNp(Np"NNN+RadioArNNNN_old$+p"NNp)Np"NNNN8N Temp$=Temp$+p"NNp(Np"NNN+RadioArNNNN_old$+p"NNp)Np"NNNR`6pN N *Postselect=Temp$4NpN N EndifcNN8N *Postselect=Temp$4NN8N EndifsNpN N DoNpN N @Find_button_4A NN (Xm,Ym,*Button$)!NN8N DoNN8N @Find_button_uA NN (Xm,Ym,*Button$)tN+|Bm -_HfNbAN ArN&<x*<N4fNpN N If Button$=!p"NNAFNp"NNpN N Or Default!NpN N @!AFNN(-1)NpN N Stat_exit=TrueNN8N If Button$=tp"NNAFNp"NNN8N Or DefaultoNN8N @aAFNN(-1)NN8N Stat_exit=TrueNAC  "+|tAN -_HfNAN ArN&<x*<N4fNhpN N Temp$=Temp$+p"NNp(Np"NNp+NAFNN_stat$++p"NNp)Np"NNNN8N Temp$=Temp$+p"NNp(Np"NNp+NAFNN_stat$+sp"NNp)Np"NNNArNzN~pJBgp/ArN&<x*<NpJBgp/ArNNCNHArNL8NlpJBgp$VHfNArNN/ArNCNFpN N Temp$=Temp$+p"NNp(Np"NNN+RadioArNNNN_old$+p"NNp)Np"NNNN8N Temp$=Temp$+p"NNp(Np"NNN+RadioArNNNN_old$+p"NNp)Np"NNNR`6pN N *Postselect=Temp$4NpN N EndifcNN8N *Postselect=Temp$4NN8N EndifsNAC  "NZArN&<x*<N4fNZpN N If Button$=4p"NNAFNp"NNNpN N @oAFNN(-1)NpN N Stat_exit=TrueNpN N *Postselect=Preselect$NpN N EndiflNN8N If Button$=lp"NNAFNp"NNNN8N @BAFNN(-1)NN8N Stat_exit=TrueNN8N *Postselect=Preselect$NN8N EndifsNR`RpN N Exit if Stat_exit!NpN N LoopNpN N Pause 74NN8N Exit if Stat_exit%NN8N LoopNN8N Pause 7%NA훜NJBfNPpN N Sput Screen$NN8N Sput Screen$NpN NReturnNN8NReturnN <NppNpNpNpNNHN8NH The following routine(s) are for properly turning radio buttonsNN8N on and off.NN8N <NppNpNpNpNA혜NJBfN pN NProcedure Radio1_4A NN (Rbutton$,Old_stat$,New_stat)NN8NProcedure Radio1_aA NN (Rbutton$,Old_stat$,New_stat)N+| -_HfNAN ArN&<x*<N4fNpN N If Old_stat$=!p"NNAFNp"NNNpN N @sAFNN(0)NN8N If Old_stat$=p"NNAFNp"NNNN8N @OAFNN(0)NA~NJBfNpN N @AFNN(-1)NpN N @AFNN(0))NN8N @AFNN(-1)NN8N @AFNN(0))NpN N EndifNN8N Endif NR`+| -_HfN AN ArN&<x*<N4fN pN N If Rbutton$=p"NNAFNp"NNNpN N @tAFNN(-1)NpN N *New_stat=p"NNAFNp"NNNpN N EndifaNN8N If Rbutton$=p"NNAFNp"NNNN8N @RAFNN(-1)NN8N *New_stat=p"NNAFNp"NNNN8N EndifwNR`VpN NReturnNN8NReturnNA혢NJBfN>pN NProcedure Radio2_A NN (Rbutton$,Old_stat$,New_stat)NN8NProcedure Radio2_aA NN (Rbutton$,Old_stat$,New_stat)N+| -_HfN `AN ArN&<x*<N4fN XpN N If Old_stat$=!p"NNAFNp"NNNpN N @sAFNN(0)NN8N If Old_stat$=p"NNAFNp"NNNN8N @OAFNN(0)NA~NJBfN *pN N @AFNN(-1)NpN N @AFNN(0))NN8N @AFNN(-1)NN8N @AFNN(0))NpN N EndifNN8N Endif NR`+| -_HfNAN ArN&<x*<N4fN pN N If Rbutton$=p"NNAFNp"NNNpN N @tAFNN(-1)NpN N *New_stat=p"NNAFNp"NNNpN N EndifaNN8N If Rbutton$=p"NNAFNp"NNNN8N @RAFNN(-1)NN8N *New_stat=p"NNAFNp"NNNN8N EndifwNR`VpN NReturnNN8NReturnNA혨NJBfNpN NProcedure Radio3_A NN (Rbutton$,Old_stat$,New_stat)NN8NProcedure Radio3_aA NN (Rbutton$,Old_stat$,New_stat)N+| -_HfNAN ArN&<x*<N4fNpN N If Old_stat$=!p"NNAFNp"NNNpN N @sAFNN(0)NN8N If Old_stat$=p"NNAFNp"NNNN8N @OAFNN(0)NA~NJBfNpN N @AFNN(-1)NpN N @AFNN(0))NN8N @AFNN(-1)NN8N @AFNN(0))NpN N EndifNN8N Endif NR`+| -_HfNAN ArN&<x*<N4fNpN N If Rbutton$=p"NNAFNp"NNNpN N @tAFNN(-1)NpN N *New_stat=p"NNAFNp"NNNpN N EndifaNN8N If Rbutton$=p"NNAFNp"NNNN8N @RAFNN(-1)NN8N *New_stat=p"NNAFNp"NNNN8N EndifwNR`VpN NReturnNN8NReturnNA혮NJBfN:pN NProcedure Radio4_A NN (Rbutton$,Old_stat$,New_stat)NN8NProcedure Radio4_aA NN (Rbutton$,Old_stat$,New_stat)N+| -_HfN\AN ArN&<x*<N4fNTpN N If Old_stat$=!p"NNAFNp"NNNpN N @sAFNN(0)NN8N If Old_stat$=p"NNAFNp"NNNN8N @OAFNN(0)NA~NJBfN&pN N @AFNN(-1)NpN N @AFNN(0))NN8N @AFNN(-1)NN8N @AFNN(0))NpN N EndifNN8N Endif NR`+| -_HfNAN ArN&<x*<N4fNpN N If Rbutton$=p"NNAFNp"NNNpN N @tAFNN(-1)NpN N *New_stat=p"NNAFNp"NNNpN N EndifaNN8N If Rbutton$=p"NNAFNp"NNNN8N @RAFNN(-1)NN8N *New_stat=p"NNAFNp"NNNN8N EndifwNR`VpN NReturnNN8NReturnNA혴NJBfNpN NProcedure Radio5_A NN (Rbutton$,Old_stat$,New_stat)NN8NProcedure Radio5_aA NN (Rbutton$,Old_stat$,New_stat)N+| -_HfNAN ArN&<x*<N4fNpN N If Old_stat$=!p"NNAFNp"NNNpN N @sAFNN(0)NN8N If Old_stat$=p"NNAFNp"NNNN8N @OAFNN(0)NA~NJBfNpN N @AFNN(-1)NpN N @AFNN(0))NN8N @AFNN(-1)NN8N @AFNN(0))NpN N EndifNN8N Endif NR`+| -_HfNAN ArN&<x*<N4fNpN N If Rbutton$=p"NNAFNp"NNNpN N @tAFNN(-1)NpN N *New_stat=p"NNAFNp"NNNpN N EndifaNN8N If Rbutton$=p"NNAFNp"NNNN8N @RAFNN(-1)NN8N *New_stat=p"NNAFNp"NNNN8N EndifwNR`VpN NReturnNN8NReturnNN NrLA`N l"_ANN N\AN tHA?N tHA=N NzNjHPp N"_NfN1A~ 0N1BmNSWHfN1NH A홪N A홰N A탮NA홪NHA홰NH pNpN LAfN l"_ArN "_AlN HmrNSave_options_data"_NfNV*tHAdN HmrNSave_options_generate"_NfNVhtHAe6N HmrNSave_options_data_generate"_NfNVtHArjN HmlNSave_options_data_"_NfNW <r$<HAdN AfN/NSave_options_data"_NHmlNSave_options_generate"_NfNW <r$<HAe6N AfN/NSave_options_generate"_NHmlNSave_options_data_generate"_NfNX <r$<HArjN AfN/NSave_options_data_generate"_NN LAfN l"_ArN "_AlN HmrNSave_options_delay_1"_NfNXltHAfbN HmrNSave_options_delay_2"_NfNXtHAgzN HmrNSave_options_delay_3"_NfNXtHAhN HmrNSave_options_delay_4"_NfNY tHAiN HmrNSave_options_delay_5"_NfNY\tHAjN HmrNSave_options_delay_6"_NfNYtHAkN HmrNSave_options_delay_7"_NfNYtHAlN HmrNSave_options_delay_8"_NfNZtHAn N HmrNSave_options_delay_9"_NfNZLtHAo"N HmrNSave_options_delay_0"_NfNZtHAp:N HmlNSave_options_delay_1"_NfNZ <r$<HAfbN AfN/NSave_options_delay_1"_NHmlNSave_options_delay_2"_NfN[l <r$<HAgzN AfN/NSave_options_delay_2"_NHmlNSave_options_delay_3"_NfN[ <r$<HAhN AfN/NSave_options_delay_3"_NHmlNSave_options_delay_4"_NfN\P <r$<HAiN AfN/NSave_options_delay_4"_NHmlNSave_options_delay_5"_NfN\ <r$<HAjN AfN/NSave_options_delay_5"_NHmlNSave_options_delay_6"_NfN]4 <r$<HAkN AfN/NSave_options_delay_6"_NHmlNSave_options_delay_7"_NfN] <r$<HAlN AfN/NSave_options_delay_7"_NHmlNSave_options_delay_8"_NfN^ <r$<HAn N AfN/NSave_options_delay_8"_NHmlNSave_options_delay_9"_NfN^ <r$<HAo"N AfN/NSave_options_delay_9"_NHmlNSave_options_delay_0"_NfN^ <r$<HAp:N AfN/NSave_options_delay_0"_NN pNpNpN?<NNTN&<x*<N߾&<x*<N߾NrrN ?<NNTN&<x*<N߾&<x*<N߾N"<NjpNpNpN?<NNTN&<x*<N߾&<x*<N߾N"<N ?<NNTN&<x*<N߾&<x*<N߾NryNjpNpNpN?<NNTN&<x*<N߾&<x*<N߾N"<N ?<NNTN&<x*<N߾&<x*<N߾N"<NjpNpNpN?<NNTN&<x*<N߾&<x*<N߾N"<N ?<NNTN&<x*<N߾&<x*<N߾N"<NjpNpNpN?<NNTN&<x*<N߾&<x*<N߾N"<N ?<NNTN&<x*<N߾&<x*<N߾N"<NjpNpNpN?<NNTN&<x*<N߾&<x*<N߾N"<N ?<NNTN&<x*<N߾&<x*<N߾N"<NjpNpNpN?<NNTN&<x*<N߾&<x*<N߾N"<PN ?<NNTN&<x*<N߾&<x*<N߾N"<NjN LAN lN SAVE OPTIONSHP <r$<H?<NNTN&<x*<N߾&<x*<N߾H <r$<H <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lNDialog box dataHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lNDialog box LST fileHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lp1NHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lp2NHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lp3NHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lp4NHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lp5NHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lp6NHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lp7NHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lp8NHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lp9NHP <̀r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lp0NHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lN Button delayHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾zN߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lNBOTHHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lNRestore screen after exitHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾zN߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lNOKAYHP <׀r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lNCancelHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lNSend report to printerHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾zN߾H?<NNTN&<x*<N߾&<x*<N߾HANHAq`N N LAN lLA헾N lLA헸N lA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNy@AN/NSave_options_data"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNzXAN/NSave_options_generate"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfN{nAN/NSave_options_delay_1"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfN|AN/NSave_options_delay_2"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfN}AN/NSave_options_delay_3"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfN~AN/NSave_options_delay_4"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNAN/NSave_options_delay_5"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNAN/NSave_options_delay_6"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNAN/NSave_options_delay_7"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNAN/NSave_options_delay_8"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNAN/NSave_options_delay_9"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfN4AN/NSave_options_delay_0"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNPAN/NSave_options_data_generate"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNrAN/NSave_options_autorestore_button"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNAN/NSave_options_enter"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNAN/NSave_options_cancel"_NNA헸N&<x*<N~pJBgp/A헸N&<x*<NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNAN/NSave_options_report"_NNAN/p N"_NN N4NN4NDIALOG BOX PROCEDURE NAME: A NNN4N+| -_HfNAN N4NN4NBUTTON NAME : 4N4AFNNN4NBUTTON TEXT : 4N4p"NNApNp"NNNN4NBUTTON ATTRIBUTE : BArNzN4fNN4N Dead buttonNArN&<x*<N4fNA buttons' ATTRIBUTE is what it does when it is selected from HP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lN@a dialog box by clicking on it. DIOX v0.9 supports the followingHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lNbutton ATTRIBUTES:HP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lN? RADIO: Only one button per group can be selected. DIOX allowsHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lN five independent RADIO GROUPS.HP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lNC TOGGLE: When this button is selected, it will toggle its' status.HP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lN@NOTE: RADIO and TOGGLE are PRE-SETABLE via your procedure call. HP <r$<H?<NNTN&<x*<N߾&<x*<N߾H <r$<H <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lNB EDIT: NOT SUPPORTED in version 0.9 of DIOX. Look for it in v1.0!HP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lN: DEAD: This type of button will DO NOTHING when selected.HP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lNB EXIT: Selecting this causes a return from a dialog box procedureHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lN? with the names of all the selected buttons passed back.uHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lN@ ENTER: This button is DEFAULT for return. The dialog box won'tHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lN+ pass back the ENTER buttons' name. HP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lN@ CANCEL: This will CANCEL any changes made in the dialog box byHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lN5 exiting and returning the ORIGINAL PRESETS.aHP <r$<H?<NNTN&<x*<N߾&<x*<N߾HtH <r$<H <r$<H <r$<H?<NNTN&<x*<N߾&<x*<N߾H?<NNTN&<x*<N߾zN߾HANHAq`N N LAN lLA헾N lLA헸N lA헸N&<@x*< N~pJBgp/A헸N&<@x*< NpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NNpJBgp/?<NNTN&<x*<N߾&<x*<N߾A헾NN~pJBgp$VHfNrAN/NHelp_attribute_exit"_NNAN/p N"_NN LA`N l"_ANN N\ABmNSWHfNNH A홪N A홰N A탮NA홪NHA홰NH >>><"""" ,""""" ""T" P R T R V T R T V V R j " ":(&& $$$" $$$ " $""& $"& ""V&br00006&&**Vb&Rb&Rb&Rb&Rb&R*FT*d4J&f*fd&r*f"V@**********>"T@B@8Ƹޠت&@@"TDBD8,ޠ؜*v@~j6* :. 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, >2 DF 8: "T*H l n x,>H4X 2 6 .Zb 0 0 0 0 0 0 0 0 0 0ZZZZZZZZZB*.( $.200000000006<.00x@BBBB>BDBD"TFBF8:*22&.*4*04&0,20,00,"TFBF8:42.,"TFBF8PHJBB@@@@,"TJBJ8:LN N.RZPHPNN:ND0"TDBD8<22042,2*"TFBF8" ,"TFBF8","TDBD8"*"TFBF8","TFBF8L $>.D:DH@D,"THBH84:8&:2&2*.."THBH8:2,26.20*0."TFBF8ZNLNN@, <r$<H <r$<HtHtHANHA&N N LAN lNDISTRIBUTE DIOX V 0.9 HP <r$<H <r$<HtH <r$<H <r$<H <r$<HtHtHANHA&N N LAN lNPERMISSION GRANTED TO HP <r$<H <r$<HtH <r$<H <r$<H <r$<HtHtHANHA&N N LAN lNUSE DIOX-MADE SOURCE-CODEHP <r$<H <r$<HtH <r$<H <r$<H <r$<HtHtHANHA&N N LAN lN*THERE'S NO REQUIRED FEE FOR DIOX 0.9. I'VEHP <r$<H <r$<HtH <r$<H <r$<H <r$<HtHtHANHA&N N LAN lN)SPENT MONTHS DEVELOPING AND REFINING DIOXEHP <r$<H <r$<HtH <r$<H <r$<H 0 If Inverse Deffill Char_color,1, Else Deffill 0,0,0 Endif Color 1 ' If Round If Seethru Rbox (X_text-Hborder)-1,(Y_text+Offset-Hieght-Vborder)-1,(X_text+Len(Characters$)*Width+Hborder)+1,(Y_text+Offset+Vborder)+1 Else Prbox (X_text-Hborder)-1,(Y_text+Offset-Hieght-Vborder)-1,(X_text+Len(Characters$)*Width+Hborder)+1,(Y_text+Offset+Vborder)+1 Endif Else If Seethru Box (X_text-Hborder)-1,(Y_text+Offset-Hieght-Vborder)-1,(X_text+Len(Characters$)*Width+Hborder)+1,(Y_text+Offset+Vborder)+1 Else Pbox (X_text-Hborder)-1,(Y_text+Offset-Hieght-Vborder)-1,(X_text+Len(Characters$)*Width+Hborder)+1,(Y_text+Offset+Vborder)+1 Endif Endif ' For Fatness=1 To Thick ' If Round Rbox (X_text-Hborder)-Fatness,(Y_text+Offset-Hieght-Vborder)-Fatness,(X_text+Len(Characters$)*Width+Hborder)+Fatness,(Y_text+Offset+Vborder)+Fatness Else Box (X_text-Hborder)-Fatness,(Y_text+Offset-Hieght-Vborder)-Fatness,(X_text+Len(Characters$)*Width+Hborder)+Fatness,(Y_text+Offset+Vborder)+Fatness Endif ' Next Fatness ' Endif ' If Seethru Graphmode 2 Text X_text,Y_text,Characters$ If Inverse Get Xhot_upper,Yhot_upper,Xhot_lower,Yhot_lower,Temp$ Put Xhot_upper,Yhot_upper,Temp$,12 Endif Goto Buttonend1 Endif ' If Inverse And Thick>0 Graphmode 3 Else If Inverse And Thick<=0 Graphmode 4 Else If Not (Inverse) Graphmode 2 Endif Endif Endif Text X_text,Y_text,Characters$ Buttonend1: Graphmode 1 Return **VVppptttppptttppptttppptttpppttttttxxbd444444444444444444444444444444444444 Current Notes St Disk Library No. 170 GFA BASIC Programs #3 DIOX version 0.95 is a dialog box editor for use with GFA BASIC. The program writes the source code to the dialog box one has designed. This program is a GREAT asset to GFA users. $$$$$"$tT" P R T R V T R T V V R j " ":(&& $$$" $$$ " $""& $"& ""tT$ T V X V Z X V X Z Z V n " $" $ <򰴲$"&$$("&$("$$.&bP00006&&XR*R*l<@&:@&:@&:@&:@&:*@"*dX6&*L&*"Vj**j**j**j**j**pTHBH88>&(22*0204..TFBF8(:*22&.*4(04&0,20,00,TD3316 1384 22042,2*TFBF84:42.,THBH82:2&62&440.TFBF8(",TFBF84" ,TDBD84"*TJBJ8,:LN N.RZPHPNN:ND0TFBF80PHJBB@@@@,TFBF8*ZNLNN@,TFBF8.L $0.,8H@,TLBL82T@B@8ĸꮮت&@@TJBJ8Ц0THBH8.TJBJ8Ϊ0TJBJ80TLBL8ʴ2THBH8.TLBL8вҾʴ2THBH8.THBH8.TJBJ80THBH8.TDBD8ꮮت*TDBD8֪֮*DIOX Version 0.9 scetchy, preliminary docs for advanced types and those who learn well from DIOX help screens. READ THE HELP SCREENS! Start off by CREATING a button. Then select TEXT under Item. Enter your text. Use any character EXCEPT DOUBLE QUOTES (")! Pick up a button by placing mouse arrow over it and click RIGHT mouse button. Put it down by clicking LEFT mouse button (sometimes GFA needs the left clicked twice). +- and cursor keys control border. Select properties and attribues of the button with drop down menus. Then create another button. WHEN CREATING, NEVER USE THE SAME NAMES FOR DIFFERENT BUTTONS. THIER NAMES MUST DIFFER BY AT LEAST ONE CHARACTER! DIOX DOES NOT CHECK FOR NAME DUPLICATION. GFA basic does when you try to run the generated dialog box routine! Anyway, It starts out this time with the last buttons' properties. Change them to your needs. Keep creating like this until you've built your box. This is strictly what-you-see-is-what-you-get! Now save the thing with SAVE under 'item'. It will lay down raw data it can later read in during LOAD (.DAT, .DSH) and it will lay down a list file that you merge into your program. Once in your program, call it up like this: @ Your_boxes_name(Pre_select$,*Post_select$) You can pre-select TOGGLE and RADIO buttons only. The ENTER, CANCEL, and EXIT can be reversed from DIOX editor, but not LOGICALLY selected. The string Post_select consists of the BUTTON NAMES (you typed in during creation of each button) IF that button had been selected! The buttons' name is delimited by parentheses. Thus Radio_box_1 would come back as (Radio_box_1). See the TESTBOX.BAS program. Merge BIGBOX into it and run it. You go into pre_select with radio and toggle box names delimited by parenthese again, same thing as Post_select. Always merge DRAW_BTN.LST into any program that has DIOXs dialog box routines. It calls it to draw its' buttons. FEAR NOT! I'm writting a begginers tutorial. Procedure Draw_text_in_box(Characters$,X_text,Y_text,Style,Char_color,Char_size,Hborder,Vborder,Thick,Inverse) If Xbios(4)=1 And Char_size=1 Char_size=6 Else If Xbios(4)=2 And Char_size=1 Char_size=13 Endif Endif Local Offset,Width,Hieght,Fatness If Char_size=32 Hieght=32 Width=16 Offset=4 Else If Char_size=13 Hieght=16 Width=8 Offset=3 Else If Char_size=6 Hieght=8 Width=8 Offset=1 Else If Char_size=4 Hieght=7 Width=6 Offset=2 Endif Endif Endif Endif Deftext Char_color,Style,0,Char_size Graphmode 1 If Thick>0 If Inverse Deffill Char_color,1, Else Deffill ,0, Endif Color 1 '  NOTE! Change Pbox to Prbox and Box to Rbox, and get MAC style buttons! Pbox (X_text-Hborder)-1,(Y_text+Offset-Hieght-Vborder)-1,(X_text+Len(Characters$)*Width+Hborder)+1,(Y_text+Offset+Vborder)+1 '  ' For Fatness=1 To Thick ' '  Box (X_text-Hborder)-Fatness,(Y_text+Offset-Hieght-Vborder)-Fatness,(X_text+Len(Characters$)*Width+Hborder)+Fatness,(Y_text+Offset+Vborder)+Fatness '  ' Next Fatness Endif If Inverse And Thick>0 Graphmode 3 Else If Inverse And Thick<=0 Graphmode 4 Else If Not (Inverse) Graphmode 2 Endif Endif Endif Text X_text,Y_text,Characters$ Graphmode 1 Return Current Notes St Disk Library Language Disk GFA Disk # DIOX version 0.95 is a dialog box editor for use with GFA BASIC. The program writes the source code to the dialog box one has designed. This program is a GREAT asset to GFA users. nt to make sure your specifying no more than one radio button per group. Common sense. The second string, the POST-SELECT, must always be a VARIABLE preceded by an asterisk (*) character. That makes that variable a RETURN variable. A return variable is one which is changed by the procedure. YOU provide the string variables' NAME, and the DIALOG BOX will provide the string varibables' CONTENTS. After you've called the dialog box and it has returned (finished, been exited from), you can now use that returned preselect variable as the method of seeing what selections were made on the dialog box. It's format will be exactly the same as the preselects' variable except that it will have an EXIT button name if an EXIT button was chosen. How do you test if a particular name is in your postselect string? Use the INSTR function. The GFA manual has more info on this function, but basically you'd do something like : IF INSTR(Postselect$, "(Buttons_name)")>0 YUP! That button was selected ELSE NOPE! That button was not selected ENDIF CONCLUSION -------------------------------------------- Well, did I cover everything on DIOX? I probably forgot some things. If you run into trouble, leave me EMAIL at GEnie where my address is PHUNTINGTON or on MICHTRONS' Sig there. OR, some local (San Diego, Ca.) BBSs I haunt are MIDI (619)452-7535 24 hours/7 days 1200/2400. SDACE (619)284-3821 24hr/7days 1200/ hopefully 2400 soon. My address is also on the Intro screen of DIOX. Good luck. -------- Paul Huntington | (FIGURE 1) | your program | | Passing \ | / preset names for \ / radio & toggle. Gosub Your_boxes_name -------------------------> Now your |<----------\ dialog box is | | in control. continue with your | | program | \ | / | | /----------> \ / \ | / | | If a button is \|/ | | selected, is it a | | EXIT,ENTER,or | | cancel button? Passing back | | names of buttons \------ NOPE, loop again de-limited, or | seperated by, | parentheses. | | | ----Send back NEW----- YES, ENTER/EXIT /|\ selected exit, | | toggle & radio names | | | \---Send back OLD----- YES, CANCEL Preset radio, toggle button names that were sent IN. No changes. ----------------------------------------------------------- Let's step through an example on how to construct a dialog box. First load up the BOXTEST.BAS file. We're going to see an example which I have previously done. We are going to see how it works when in action. We want to this this first because you are going to build up an identical box, and you probably want to see what it SUPPOSED to do and look like. Now that you are in the BOXTEST.BAS program, merge in the EXAMPLE.LST file into an appropriate spot. A few lines from the top of the program you'll notice a statement @Yourbox (Preset$,*Postset$) rename that statement to @Exmple_box (Preselect$,*Postselect$) and now run the program and the dialog box should appear in the upper half of the screen. This is a self-adjusting AutoRes dialog box. It will appear the same in mono or medium res color. Now twidle with everything and see what it does. Note that when the EXIT buttons, Cancel button, and Okay button is clicked on, the box exits as your choices are printed out. Ok, now you know what you've got to make. So let's do it. Load and run DIOX.PRG. Press return if you've already read the title screen. In medium or High res, an alert box will come up and ask if you want your box to automatically adjust to medium and hi res. Select YES. Now, select the load option and let's take a look at our initial example. Load in the EXAMPLE.DAT file. If your operating with a color monitor in medium resolution, look at what happens to this dialog box! It is not the same thing as you saw on the demo! Although everything fits onto the screen, it covers both halves. That is because AutoRes only effects the LST file which DIOX generates, NOT the actual data of the .DAT or .DSH files, nor will its' draw routines adjust more than the SIZE of the fonts. No matter. It still is editable. But we don't want to edit this. We want to MAKE this. So we will start over by pressing ESCAPE. Then press return. Then select YES to AutoRes again. Now, let's CREATE our first button. Select the create option from underneath the 'Item' drop down menu. It asks for an ITEMS procedure name. That should actually be BUTTONS procedure name, but DIOX is out already, so I'll correct that next time. So now we enter "RADIO_A_1" and return. Nothing should appear to happen on the screen. We need to make the buttons' TEXT, so select the STRING option from the 'Text' drop down. Now it wants a String of characters for your button. Enter "Radio A 1" and return. Now you should see a line of text on the screen as "Radio A 1". You've just typed it in. Pick up the button and move it twoards the right side of the screen. You do that by placing the mouse arrow over the button. Press the RIGHT mouse button for a moment. Now the arrow will be gone and the button moves with the mouse. place it where you previously saw the same "Radio A 1" button in the example (on the right side of the screen, a little up). When placed correctly, you can either press the LEFT mouse button to set it down, or ALT-INSERT (you may need to do either twice as I've noticed GFA can occaisionaly miss a click). Let's make a border (you could mess with its' border while still in movement mode, if you wanted) by pressing the '+' (plus) key once. Now let's increase the horizontal size of the border by pressing the cursor right key twice. So we have our buttons' physical appearance in order. What else do we have to do? How about telling DIOX that this is going to be a RADIO button. So go to the 'Attr' drop down and select RADIO. A dialog box pops up and presents you with a choice of five different 'groupings' of radio buttons. Select group 1. Hit return. This button is now a radio button in radio group 1. Now let's create the next RADIO button, the one we saw in the example as "Radio A 2". Go to CREATE and select it. Now we have the previous text to edit, as DIOX now has a default to present. ALL menu options will reflect the LAST BUTTON YOU ACTIVATED. We don't have to do a complete re- typing in order to get "Radio_A_1" to "Radio_A_2". Press the DOWN cursor button and you're cursor goes to the end of the text line. Hit BACKSPACE once and then press '2'. Hit return. From now on, everytime you create a button, it will automatically start off as being picked up. How about a tip on how to do some precision positioning of buttons? We want a profesional look, yet v0.9 lacks autosnap. No problem. What we want to do is precisley align the new button under our previous one. So, position it approximatley with the mouse just under the other button, the upper edge of its' border should just touch the bottom of the first buttons' border. Next, let go of the mouse and start using the keyboard. Alternate- left cursor or alternate- right cursor will move the button one charcter space left or right. Shifted- alternate- left and right cursors will move left and right one pixel. The same applies for up and down. Now position the new button so its' left and right sides are flush with the old buttons' left and right sides. Use the SHFT-ALT-RIGHT/LEFT for that movement. Use the SHFT-ALT- UP/DOWN for precise alignment of the buttons' top edge to the old buttons' bottom edge, so they just touch. Now, you've got the left-right alignment correct, okay? And the two buttons are just touching vertically? Good. NOW, press ALT-DOWN cursor once. You now have the ability to uniformly space buttons, because ALT-Cursor always spaces the same distance. The next button under this one you put a single ALT-DOWN from this button, and so on. It works like that for horizontal, too. OK, so now your button is precisley in place. So as not to disturb its' position, use the ALT-INSERT button as a substitute for the LEFT mouse click. You may need to do it twice in a row. I use the ALT-CRSR-INSERT keys constantly! They're how I line things up! Now we have to edit its' text. Select the STRING option and simply edit "Radio A 1" into "Radio A 2" by the same method as you did with editing by CREATE. Generaly, you may sometimes wish to temporarily lay down a button, change its' text, then pick it up to line it up. That is because your text length may vary, and so will your buttons' border dimensions. In our case, the text size was the same, so our previous alignment was not futile. How about our most recent buttons' attribute? We haven't messed with that yet. Look at the 'Attr' drop down menu. As you can see, it is already checked-off in front of RADIO. Let's see if our group is still the same. Select RADIO, and there you see that Group 1 is selected already, which is what we want. Press RETURN. You did not HAVE to check the attribute like that, as it was defaulted to that already. I just wanted you to see it for yourself. Now see if you can make a button whose name is 'Radio_a_3' and whose text is "Radio A 3". Position it under the button whose text is "Radio A 2" by one ALT-DOWN length. Remember that its' attribute defaults to radio group 1 if you don't change it, which we don't want to do. Now create another button called 'Radio_a_4' and give it a text line of "Radio A 4". Position it under the button whose text is "Radio A 3" by the length of one ALT-DOWN. All four buttons should now have uniform, even spacing. Let's change gears a little. We are now going to make another 'grouping' of radio buttons. Let's only put in three buttons this time. CREATE a button entitled 'Radio_b_1'. Give a line of text: "Radio B 1" and position it to the left of the button "Radio A 1". Make it four ALT-RIGHT lengths from the button. NOW, we DO want to make some modification to the attribute, as we are dealing with a different radio group. Can you guess how we will deal with this? Yup. Select RADIO from the drop down, select, oh, Group 4 maybe, (that is what the examples' is) and hit return. Now create a button entitled 'Radio_b_2' and give it text of "Radio B 2" and align it one ALT-DOWN length beneath the "Radio B 1" button. Make one more button called 'Radio_b_3', give it text of "Radio B 3" and put it beneath "Radio B 2" by one ALT-DOWN. Remember, the attributes of the last two buttons default to the previous buttons' if you make no changes. We want no changes from "Radio B 1". How about something different? Let's make a TOGGLE button. First, create a button called 'Toggle_1'. Give it text of "Toggle 1" and put it twoards the upper left of the screen. Now, let's select the TOGGLE attribute by selecting TOGGLE from the 'Attr' drop down. Poof! You've got a toggle button. Make a second toggle called 'Toggle_2' and put it one ALT-DOWN beneath 'Toggle_1'. The attribute is still toggle, remember? Make two EXIT buttons now. Call one 'Exit_1' and give it text of "Exit 1" and place it several ALT-DOWNS under "Toggle 2". Now select EXIT form the 'Attr' strip. Call the other 'Exit_2' and give it text of "Exit 2" and place it one ALT-DOWN beneath "Exit 1". How about making a CANCEL button? And we want an ENTER button, too. Create a button called 'Okay' and make its' text "Okay". Position it in the upper middle of the screen. Select an attribute of ENTER. This is going to be a default button, so let's graphically indicate that by pressing '+' a few times, thickening the border. Create a button called 'Cancel' and give it text of "Cancel". Position it below "Okay" a few ALT-DOWNS. Select the attribute of CANCEL. Also, press '-' a few times to get rid of the thicker border. Make it one pixel thick, like the others. DETAILS! Where's the titles? How about creating a button called 'Radio_title' with text of "RADIO". Place and center this button above the radio buttons. Remember the example? Select the DEAD attribute. This is just for display. Create a button named 'Toggle_title'. For a text line, let's use a special Atari ST character not found on the keyboard. How? Select STRING. Delete what's there now. Type CONTROL-A. Enter the digit 4. Press a cursor key. There's the RIGHT ARROW symbol, whose ST-ASCII code is 4. Continue to type in "Toggle". Position the button to the right of the toggle buttons. Create a button called 'Exit_title' and give its' text line as in toggles', only type in "Exit" instead of "Toggle". The attribute is still DEAD. Shapes and fill patterns. No sweat. How about this. We box in each radio group, then box in the two groups plus the radio title. Select BOX to do that. Start a box corner with mouse right, finish the other corner with mouse left. If you don't like it, press UNDO and whatever the last shape is, it will be deleted (fill pattern counts as a shape). Fill in a pattern between the two small boxes and the big box. Select fill. Then, select a pattern with the right mouse button, start filling with the left mouse button at the appropriate mouse coordinates. How about boxes around TOGGLE and EXIT. Do you remember the example? You can do it. That covers the editing. One more thing. To delete a button, you must activate it by either right-mouse clicking on it and laying it down, or by pressing return when the mouse arrow is on top of the button. Then press delete. That offensive button has now gone away. Now we are going to save it. Do you want to check all the attributes and stuff first? Did you make mistakes? Go to each button with the mouse arrow on top of it, press return, and look at the strip menu options. If you made a mistake, simply change it. Wnat to check its' name? Select RENAME. Just Return if correct, or edit if it's a mistake. OKAY! Everything is good. SAVE it. Select SAVE. Enter the dialog box name of 'Example_box_1'. Return. Save it as EXAMPLE1.LST (always use .LST). NOW TO TEST: Load BOXTEST.BAS from the GFA interpreter. MERGE your EXAMPLE1.LST file. CHANGE the name of "Yourbox" to "Example_box_1". Run it! It BETTER work, right? GOOD! It works..... Now let's INTERFACE it! Let's write our own, short program that tests for the various buttons. First, MERGE EXAMPLE.LST or EXAMPLE1.LST. Now, merge in DRAW_BTN.BAS. Next, we'll write a DO-LOOP. Let's exit if we select the button called 'Exit_2'. Otherwise we print the buttons chosen and loop around, feeding back what our previous choice was. Do Cls @Example_box (A$,*A$) !Notice,going IN(A$) Cls ' automatically will be set to ' coming out(*A$). If Instr(A$,"(Radio_a_1)")>0 ! Is 'Radio_a_1' selected? Print "RADIO A 1" Endif ' If Instr(A$,"(Radio_a_2)")>0 ! Is 'Radio_a_2' selected? Print "Radio A 2" Endif ' If Instr(A$,"(Radio_a_3)")>0 ! Is 'Radio_a_3' selected? Print "RADIO A 3" Endif ' If Instr(A$,"(Radio_a_4)")>0 ! Is 'Radio_a_4' selected? Print "RADIO A 4" Endif ' If Instr(A$,"(Radio_b_1)")>0 ! Is 'Radio_b_1' selected? Print "RADIO B 1" Endif ' If Instr(A$,"(Radio_b_2)")>0 ! Is 'Radio_b_2' selected? Print "RADIO B 2" Endif ' If Instr(A$,"(Radio_b_3)")>0 ! Is 'Radio_b_3' selected? Print "RADIO B 3" Endif ' If Instr(A$,"(Toggle_1)")>0 ! Is 'Toggle_1' selected? Print "TOGGLE 1" Endif ' If Instr(A$,"(Toggle_2)")>0 ! Is 'Toggle_2' selected? Print "TOGGLE 2" Endif ' If Instr(A$,"(Exit_1)")>0 ! Is 'Exit_1' selected? Print "Exit_1" Endif ' Exit If Instr(A$,"(Exit_2)")>0 ! If 'Exit_2' selected,end! Loop EXPERIMENT! zFF%!!F zFF%!!F F!#F F {h%FF { &FF<#  !#  !# 6  !#  Fh {`F<#  !#  !# 6  !#  Fh F {F {&F<#  !#  !# 6  !#  Fh {F<#  !#  !# 6  !#  Fh F F |EGF |b%FG@#  !#  !# 6  !#  F  |F@#  !#  !# 6  !#  F  F | F  F }&F!F ' ! !F }FF'!(!)!*!F'!(!!@F F'-F( F  }6F!F }tF }X F !F  }pF }l# F!F FF FF FF ' ! !F|F !F.F|Ԥ}̀dH,wҀjN2~̀fJ0|Ȁ`Fހ*v€\@؀$p}PV<ҀfD<`w` Efv*oM'X m HPHUBg?<JNA(m)m -:gS)@ -OK1PC#HNHx?<HNA@)@l/?<HNA)@h&@)@XЬl)@d)@`ARCpr Ѝ"QHNFALN:Hz2?< NA\pdAxr0XQ)K\NN rhVJrBjNuHz?<&NN\NݜCAp$L Qp Nۈ9lrBlJpNNۈpMNۈ9@pdAr 0Q0tr N9lNnNupealp`NuaNJHz?<&NNBWNANC2A@p222NrҌ0<NB0,rNurA9Ar`v C9Cr`rt9@9A9BNrrҌpsNB0,Nu9@N`rDҌpsNBNuC2 @ e @}bA@p222Nr,Ҍ0<NBNu pa2|a>:><|a4g RGj`a(0GVfA1G<ap??<?<NM\Nu??< NMXNu&8*:EENuHn 2$4BBNuAd RdQRB BbABJk 0NuJBjBBXNu 0Nu 2$NuE`B<gJEgEjCDEDF Fe( F dF8BCHC` F0bFHC8v` HD8HDkDуdQRBNuDdBDA@kgAр[SBk0NuJlJBk&Nu0g H@rB JkЀ[` BbNuJBj prtNuHPAJgPpr$< _Nup _NtNu&8*JEgJBgJjBEB:HC҅H@:|ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuN pNNuCDEJEgJBgJjBEBQ*HE?<>0rHGGdHGGdSWDуdi\?<>0rHGGdHGGdSWDуdiN?<>0rHGGdHGGdSW2 H@N?<,>CEdGH@0r`?<`JBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNuprt|=|   g +g -f .g20  b 0e 9b da`RF` .f 0e 9b dajSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`HJjDDDS4</NJFkSFk&aQN`Ha"FFaQL8N߾6. JgtBn Nupr$<NuJBk4<rpAC v JBgJjv-| Bb BkH>aaNRFBdL8?N߾<JBga2SF Be BgQRB`ApdR e <rRF&0xafEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`2:HQ A dGe GbFGNu G0dFGHANu~NuHnr$g4jDk( b4<J@`@[H@0Nu4<Ѐ[Nu4<NuNuAd RdQRBBkBjDBJjDNupNufJj fJAkNupNdRdRrxaAffBWHNuJjDBDA@JBfprJjDEDD@JEfvxNuaغBffAVHNuCDEaEf fDUHNu]HNuCDEaEffDftNuJBgCjtNuE`$@Hz ?<&NN\Nu NuNNNNFH"HN NN p `p ap Cpln<,(AL$I"vz x `gfURf~QjJFj4\Fk.aPHS&I.N``p???<NM\Qj&_Nu|HQ/g ??<@NAXXfNuJkp%NJl 6g Fg FfXNNu09?<%NNTNuJBfNu <r$<NuJjDNu @ 2$4BBN$ABJk0!Nu @PNPNux&k@FC Be& B dЄeNu B0dHDDdRdQRBNu&<x*<NlFC Be B djNu B0dDdSkfJAftNuAр[SBNu"l`d&6JBft&&| NuN"l`ep N c 2$F4BBN$JBgB*#E8#&#Jjh`,J]o6\`6 c 2$4BBN$*#8#&#Jk:JkִEffDbAeABJk0!NuRdQRB`JjҺBf̶fȸA` c 2$4BB*#[8#&#Nl*#8#&#JBgJjEJjL`Ja:Jo\`Jk:JkEffDbAeABJk0!NukDNuQRB`JjҺBf̶fȸA`p`pN @ddAgH`p`p9@(9@*BlNuN8CpN EN `p`pN0<9@:, INJ@g@8 FN EdbAJfE @e4r$Wf"FANuPRN:LST:AUX:CON:MID:IKB:VID:,J@fC E& B Og& Rgl Ag@ Ug2 Ig $CpNp=`pNAXJ@jNNuS@k ??<NAXNuvN)@p `H@)@prtNAHplrtNB 2pNpNۺpapaprapalpalpalpaTpaTpaTBp'a?<NNT@B){L9|0<rtNpapap9@p`pvNv`v`vj`v `v`v`v`?Aa*` Al 2l 4)lVH)lRprtNAl 2l 4HVNuAl 2l 4L VA0000000000prtN9Cp rtNAv` Av `Avl 2l 4)lVHNPaBp0,l 2Nua40,HNua*p0,l 4Nuaprt0,l 22,l 44,NuN9||BlBlrҌpsNBNu0<}N& ?<NNC`&?<NNT"@ C <}N`N @((?<NN.?<NNX@LvA HA HNuNup9@HA)A,N. FN @e024E$ Bb5B5A6CC5CK5CAB008:Dk`Ek\00<,>,SFSGFnHGnDDDk9DBlDEk9EBlFcllGcll0,lb 0,lcNu"pmrtA)HA)HNpNHHPN.4 _:8><DbFEbGCHP@dʾAdBD2ƞE29|C???FF22N23BRG0@\@N"2)IN"(* 9AJA)H@@[000][ˈN Evz`* [g" ]g |g QSz` zQSpQ][ɈN Dvx`* [g" ]g |g QSx` xQSpQ]Bp4NۈHNu*( INA)H @depd ae zb QB DNA\)H @ e` ae zb \gQBA BhNpZNۈA BP"`#|}NA"H0,tg"Hg \f`A\fS A ENAR@H`2QNu@9@JpNNۈr|<N @xepw2A$JBjDFHB t`0QBl9F)lVTAtp 9| N2(g"P@g2RADAH""l`r2oZAe 1@#)I`Nuk1@Nup NN"l`dpNAtrdJhk\QpaNH ld$l`"Hg: k&@0+R`g k#&@0+S@H3 Q&f)I`LNu?<?<NAXJgJgNAH@B pNA NuApNNF$N$BS@kH2QNupC ұd"X0Pg"RA$D#Nu"X0NuNJ@gpNu _0HpN _0HpNp"_0HqN p"_0HqN E ұeHHQ0)N$_$ZR@H`2QNu$Y0gHR@@"D%$X0P2g# R@%NupE $ $X0dP.gRG,D%pr Y2dP.gRG,D!p4Ae4v`VfANuNWHNuNVHNu Ihd*N$E$RR@H`2QˈN ENu Ihd"*N$E8*$R`"QˈN ENu2)A IJAfr4(Ae*RBBc0*SA?N$E$R`QˈN ENup`(* 0(iN$E 4R`Q$D 4R`QˈN DN ENua NuN IHPg"B  g &gNJBjt BNut`Rptr ae OgT Xgj HgSRB ae Fb$0k  c_  c b退`tSJBkNRB0 b b瀀`RB0 fрd`?Hl?<GNAPA"HJf SNr ,* N& ( EN C"Sj|AcJ@fCAHPBHQ?NA\ _JjNNuH&NրNjNu?r`