SACHOICE() Short: ------ SACHOICE() Achoice replacement, uses TBROWSE, codeblock Returns: -------- <nSelection> => selection, 0 if none Syntax: ------- SACHOICE(nTop,nLeft,nBottom,nRight,aOptions,[bKeyBlock],[nStart],[@nRow],; [nMRow, nMCol],[bMouse]) Description: ------------ This semi-replaces ACHOICE() by using TBROWSE instead, and by accepting an exception codeblock instead of a user defined function. <nTop,nLeft,nBottom,nRight> are the dimensions. <aOptions> is the array. It need not be of type Character. First-letter presses go to the next matching letter of the next character-type element. Up/down/home/end/pageup/pagedown are used to position the cursor. ENTER returns the current selection. Escape returns 0. The screen is not saved and restored. This is a building block function, like ACHOICE(), so save and restore the screen, draw a box around it, etc, as you would ACHOICE(). [bKeyBlock] a codeblock which will be executed if an exception key is received (any key not otherwise meaningful). The codeblock will be evaluated and will be passed: 1. current element # 2. exception key value 3. the tbrowse object as parameters. [nStart] is an optional starting element. Default is 1. [@nRow] is an optional starting row. Default is 1. Pass by reference to retain value between calls. [nMRow, nMCol] (new in 3.5) Directs sachoice() to draw the "[.][.]" for mouse up/down at nMrow, nMCol, and to be aware of mouse clicks on these buttons. (the screen under the arrows is saved/restored) [bMouse] is a codeblock to evaluate mouse clicks other than those meaningful to sachoice(). The codeblock is evaluated as follows: eval(bMouse,mouserow, mousecolumn) Examples: --------- USE CUSTOMER aFlds := afieldsx() bExcept := {|e,k|msg("You pressed ",str(k))} ?SACHOICE(10,10,20,12,aFlds,bExcept) //to retain element and position between calls nSelect := 1 nRow := 1 aMeals := {"Pizza","Chicken","Chinese"} while nSelect > 0 nSelect := sachoice(10,10,20,20,aMeals,nil,nSelect,@nRow) // code endif Notes: ------- This will be a lot easier to mouse-ize than ACHOICE. (or is that RAT-ify..) Source: ------- S_ACHOI.PRG
Pingback: SP Popup Functions | Viva Clipper !
Pingback: SP Functions | Viva Clipper !