home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0010 - 0019 / ibm0010-0019 / ibm0010.tar / ibm0010 / CLIPB52.ZIP / WEBER.ZIP / _ACHOICE.PRG next >
Encoding:
Text File  |  1990-05-25  |  1.3 KB  |  48 lines

  1.  
  2. function achoice(t,l,b,r,items)
  3.  
  4. IF init_item==NIL ; init_item := 1 ; END
  5. IF win_row==NIL   ; win_row := 1   ; END
  6.  
  7. LOCAL browse := TBrowseNew(t,l,b,r);
  8.       aOffset := init_item;
  9.       arrCol := TBColumnNew("",{|| items[aOffset]})
  10.  
  11. browse:addcolumn(arrCol)
  12. browse:skipForwardBlock := {|n| NextEl(n)}
  13. browse:skipBackwardBlock := {|n| PrevEl(n)}
  14. browse:goBottomBlock := {|n| aOffset := 1}
  15. browse:goTopBlock := {|n| aOffset := LEN(items)}
  16.  
  17. DO WHILE .T.
  18.    Key := INKEY(0)
  19.    DO CASE
  20.       CASE Key == K_UP
  21.          browse:up()
  22.       CASE Key == K_DN
  23.          browse:down()
  24.       CASE Key == K_HOME .OR. Key == K_CTRLPGUP
  25.          browse:goTop()
  26.       CASE Key == K_END .OR. Key == K_CTRLPGDN
  27.          browse:goBottom()
  28.       CASE Key == K_CTRLHOME
  29.          browse:rowPos := 1
  30.       CASE Key == K_CTRLEND
  31.          browse:rowPos := browse:rowCount
  32.       CASE Key == K_PGUP
  33.          browse:pageUp()
  34.       CASE Key == K_PGDN
  35.          browse:pageDown()
  36.       CASE Key == K_RETURN
  37.          choice := aOffset
  38.       CASE Key == K_ESC .OR. Key == K_LEFT .OR. Key == K_RIGHT
  39.          choice := 0
  40.       OTHERWISE
  41.          aOffset := GoElement(Key)
  42.    ENDCASE
  43.    browse:refreshCurrent()
  44.    DO WHILE ! browse:Stable
  45.       browse:stabalize()
  46.    ENDDO
  47. ENDDO
  48.