LISTBOX()

 

Syntax:

         If: ‘n=#-of-elements in box, w=width of lines in box
       Then: dim name[n](w) ‘as in dim name[4](12)
         If:
       Then: name["1"]="Line 1 of box" ; name["2"]="Line 2 of box"
       Then: name["3"]="Line 3 of box"; ... ; name[n]="Line n of box"
       Then: a=LISTBOX(name,first,last,row,col,height,width)

Then: aa=LISTBOX(array,first,last,row,col,height,width [,position])

 

Version Ref:  4.1

  5.0 (Enhanced)

Description:

Displays a popup window containing a list of values from "name", an array defined with DIM.

Only "name" is required, all other parameters are optional. "first" and "last" refer to the range within the array to use (defaults to first and last elements of the array).

 

All parameters up to the last parameter used must be specified. Any unused parameters may be specified as a NULL string (" ''). Examples of valid parameter lists follow:

 

       Then: aa=LISTBOX(array,"","","","",height,width)
       Then: aa=LISTBOX(array,"","","","","",width)
       Then: aa=LISTBOX(array,"","","","",height,"")

 

Unused trailing parameters can be omitted. For example, the following two statements are equivalent:

 

       Then: aa=LISTBOX(array,"","",row,col)
       Then: aa=LISTBOX(array,"","",row,col,"","")

 

Note Version 5.0 enhanced "LISTBOX" to take an optional 8th parameter, which is the position of the initial highlight.

 

If row/col/height/width are not given, the window is centered on the screen. If the window is larger than needed, it will be shrunk accordingly.

 

The user sees the listbox (as prescribed) on the screen and control is handed to the user. Moving the highlighted bar to the desired choice and pressing ENTER deposits the number of the listbox item in the specified variable to the left of the equal sign, and puts control back on the processing table. The listbox will be cleared automatically from the screen. Appropriate action can be taken based on the number chosen by the user.

 

Choices from the listbox are made by positioning the highlight bar to the desired element with the arrow keys, or by pressing the first character of that element, then pressing < RETURN >. If the desired element is named "test!," pressing "t" selects it. Select the next element (named "test2") by pressing "t" again.

 

The < PgUp > and < PgDn > keys may be used to move between screen pages. Use < HOME > to move the highlight to the first element on each screen page.

 

Description:

Prompts the user to select a value from a list.

 

Examples:

       Then: dim months[l2](3)
       Then: months["1"]="Jan";months["2"]="Feb";...months["12"]="Dec"
       Then: a=LISTBOX(months,"","","","","3")
       Then: show "You chose month#"<a<"which is"<months[a]

@keyH    If:
       Then: dim hbox[3](41)
       Then: hbox["1"]="1) Print the full schedule for this date."
       Then: hbox["2"]="2) Print the schedule for a specific Dr."
       Then: hbox["3"]="3) Cancel hardcopy request. "
       Then: sg=listbox(hbox)
         If: @sk="SAVE"
       Then: goto @keyH
         If: @sk="BRKY"
       Then: end
         If: sg="1"
       Then: goto doform1
         If: sg="2"
       Then: goto doform2
         If: sg="3"
       Then: end
doform1  If: '*doform1
       Then: beep
       Then: msgbox "\n\rThis schedule is\r\n\rnow printing. \r\n\n"
       Then: sn="rreport pcdappdet -f alldoctors -v vall -id -a -u -bg -bs 2>/d
             ev/null 1>/dev/null -r"<p&d
         If: 'the /dev/null redirections to /dev/null are for Unix only
       Then: system noredraw sn
       Then: end
doform2  If: '*doform2
       Then: input popup sl "Enter Doctor \r1-8\r\n==> "
         If: sl=""
       Then: end
         If: sl lt "1" or sl gt "8"
       Then: goto doform2
       Then: sm=doctnum[sl]
       Then: sn="rreport pcdappdet -f singlecoct -v vsingle -ia -a -u -bg -bs 2
             >/dev/null 1>/dev/null -r"<sm&p&d
         If: ' the /dev/null redirections above are for Unix only
       Then: beep
       Then: msgbox "\n\r This schedule is\r\n\rnow printing. \r\n\n"
       Then: system noredraw sn
       Then: end

 

NOTE: LISTBOX usage can be very elaborate. Large multiple page arrays may be put up which start and end at varying places in the array based on other processing. Also, the elements of the listbox can be filled with varying text each time they are displayed by reloading the array elements before putting the LISTBOX up on the screen (lines 260-261 below). If any of the options such as beginning element and ending element are not needed, use a "" as a placeholder in their stead (line 266 below).

 

       Then: 'following arrays used on doctor by hour listbox
       Then: dim lbox[90](74)
       Then: dim num1[90](10) ; dim num2[90](10) ; dim num3[90](10)
       Then: dim name1[90](20) ; dim name2[90](20) ; dim name3[90](20)
       Then: dim tim[90](6,,g)
       Then: tim["1"]=" 7:00a" ; tim["2"]=" 7:10a" ; tim["3"]=
              " 7:20a" ; tim["4"]=" 7:30a" ; tim["5"]=" 7:40a" ; tim["6"]
              " 7:50a"
       Then: tim["7"]=" 8:00a" ; tim["8"]=" 8:10a" ; tim["9"]=
              " 8:20a" ; tim["10"]=" 8:30a" ; tim["11"]=" 8:40a" ; tim["12"]=
              " 8:50a"
              ...
              ...
       Then: tim["85"]=" 9:00p" ; tim["86"]=" 9:10p" ; tim["87"]=
             " 9:20p" ; tim["88"]=" 9:30p" ; tim["89"]=" 9:40p" ; tim["90"]=
             " 9:50p"

 

 

dosked   If: '*dosked
       Then: gosub ldnum ; gosub ldnames ; i(2,.0)="1"
loop     If: i le "90"
       Then: lbox[i]=tim[i]&"  "&num1[i]&"  "&""name1[i] ; i=i+"1";goto loop
       Then: display "doctday"
       Then: show ("1","1") "  Schedule for: Dr. " & doctlongname[a] < "on" < "\
              r" & jk & "\r" < jm < ra
       Then:  show ("22","1") "Use \r ARROWS \r or \r Nxt-Page \r, \r Prv-Page \r
              keys. Press \r RETURN \r to select time slot."
       Then: show ("24","2") "(You must choose 'beginning' time slot of existing
              appts to view/modify them.)"
         If: 'z will hold the number of the element selected, remember the offset
       Then: z=listbox(lbox,b,e,"4","1","18","")
         If: @sk="BRKY"
       Then: cls ; return
         If: @sk="SAVE"
       Then: cls ; return
         If: 'deals with the offset for morning, afternoon, evening
       Then: z=z+(b-"1")
       Then: gosub filpats