[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
FUNCTION SACHOICE() *changed*
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
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson