Programming with the VPE code library

Programming with the VPE code library

Started 7/24/2006 by K Toppenberg

I'll use this to capture notes:

The code library is in the %ZVEM namespace. The source files are stored in _ZVEM*.m on GT_M

The %ZVEMKT* modules contain the code for the scrollable display/selector.

SELECT^%ZVEMKF -- generic selecter
(different from SELECT^%ZVEMKT)

Examples:

do SELECT^%ZVEMKTF(50,"TOP") will allow a user to select (by toggling with the space key) a list of fileman fields from file 50. [ESC] will jump out, and the results are stored in ^TMP("VPE","FIELDS",$J,*)

SELECT^%ZVEMKT (Generic Lister)
Here is some code that uses the VPE Selector tool. It is just a wrapper

Selector(pArray,pResults,Header) ;"Purpose: Interface with VPE Selector code to select from an array       ;"Input: pArray -- NAME OF array holding items to be selected from ;"           Expected format:        ;"              @pArray@("Display Words")=ReturnValue  <-- optional ;"             @pArray@("Display Words")=ReturnValue        ;"              @pArray@("Display Words")=ReturnValue ;"      pResults -- NAME OF array to have results returned in        ;"              ** Note: Prior will NOT be KILLED first ;"             Format of returned array:          ;"              Only those valuse that user selected will be returned ;"             @pResults@("Display Words")=ReturnValue  <-- ptional        ;"              @pResults@("Display Words")=ReturnValue ;"             @pResults@("Display Words")=ReturnValue          ;"       Header -- OPTIONAL -- A header text to show. new ref set ref=$name(^TMP("VEE",$J)) kill @ref if $get(pArray)="" goto SelDone if $get(pResults)="" goto SelDone

;"First set up array of options               new DispWords,RtnValue        new order set order=1        set DispWords=$order(@pArray@(""))        if DispWords'="" for  do  quit:(DispWords="")        . set RtnValue=$get(@pArray@(DispWords),"")        . set @ref@(order)=RtnValue_$char(9)_$extract(DispWords,1,$get(IOM,80))        . set order=order+1        . set DispWords=$order(@pArray@(DispWords))        if $get(Header)'="" set @ref@("HD")=Header        ;"Note: Rules of use: ;" ref must=^TMP("VEE",$J)        ;"  Each line should be in this format: ;"     @ref@(number)=ReturnValue_$char(9)_DisplayValue        ;"      @ref@(number)=ReturnValue_$char(9)_DisplayValue ;"     @ref@(number)=ReturnValue_$char(9)_DisplayValue        ;"  Results come bac in: ;"     ^TMP("VPE","SELECT",$J)        D SELECT^%ZVEMKT(ref)

;"Format selected options.               new index set index=$order(^TMP("VPE","SELECT",$J,""))        if index'="" for  do  quit:(index="")        . new s,s1,s2        . set s=$get(^TMP("VPE","SELECT",$J,index))        . set s1=$piece(s,$char(9),1)        . set s2=$piece(s,$char(9),2)        . set @pResults@(s2)=s1        . set index=$order(^TMP("VPE","SELECT",$J,index))        kill ^TMP("VPE","SELECT",$J)        kill @ref SelDone                quit

TestSel new temp,results set temp("Kevin")="option 1" set temp("John")=123345 set temp("Bill")=$J do Selector("temp","results","Here is some header text") if $data(results) zwr results(*) quit