home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a075 / 1.img / TOOLKIT1.EXE / SST86.PRG < prev    next >
Encoding:
Text File  |  1989-08-29  |  3.5 KB  |  144 lines

  1. ********************
  2.  
  3. FUNCTION Apop
  4.  
  5.    PARAMETERS _atop, _aleft, _adown, _aover, _array, _promptit, _popmess, _popshad
  6.  
  7.    IF PCOUNT() = 4
  8.       DECLARE _array[FCOUNT()]
  9.       AFIELDS(_array)
  10.       _promptit = .T.
  11.       _popmess = ""
  12.       _popshad = .F.
  13.    ELSEIF PCOUNT() = 5
  14.       IF TYPE("_array") != "A"
  15.          DECLARE _array[FCOUNT()]
  16.          AFIELDS(_array)
  17.       ENDIF
  18.       _promptit = .T.
  19.       _popmess = ""
  20.       _popshad = .F.
  21.    ELSEIF PCOUNT() = 6
  22.       IF TYPE("_array") != "A"
  23.          DECLARE _array[FCOUNT()]
  24.          AFIELDS(_array)
  25.       ENDIF
  26.       _popmess = ""
  27.       _popshad = .F.
  28.    ELSEIF PCOUNT() = 7
  29.       IF TYPE("_array") != "A"
  30.          DECLARE _array[FCOUNT()]
  31.          AFIELDS(_array)
  32.       ENDIF
  33.       _popshad = .F.
  34.    ELSEIF PCOUNT() = 8
  35.       * don't do anything
  36.    ELSE
  37.       RETURN(0)
  38.    ENDIF
  39.  
  40.    PRIVATE _screen, _posit, _simrec, _pscreen, _ending 
  41.    PRIVATE _spacing, _begset, _starting, _opt, _qaz, _cshort
  42.  
  43.    _cshort = .F.
  44.  
  45.    IF _aleft + _aover >= 76
  46.       _aover = 76 - _aleft
  47.       _cshort = .T.
  48.    ENDIF
  49.  
  50.    Windowpush(_atop, _aleft, _atop+_adown, _aleft+_aover,"","","","","","",.T.)
  51.  
  52.    IF !EMPTY(_popmess)
  53.       @ _atop, _aleft + 2 SAY _popmess
  54.    ENDIF
  55.  
  56.    STORE 1 TO _screen, _posit, _simrec
  57.    STORE .F. TO up, down
  58.    
  59.    _pscreen = _adown - 4
  60.    _ending = LEN(_array)
  61.    _spacing= _adown - 1
  62.    _begset = 1
  63.    DO WHILE .T.
  64.       Clear_area()
  65.  
  66.       IF _promptit
  67.          EXTERNAL Pan_up, Pan_down
  68.          SET KEY 18 TO Pan_up
  69.          SET KEY  3 TO Pan_down
  70.       ENDIF
  71.  
  72.       STORE 1 TO _starting, _opt
  73.  
  74.       _posit = (_screen * _pscreen) - (_pscreen - 1)
  75.  
  76.       FOR _qaz = _posit TO (_pscreen * _screen)
  77.  
  78.          IF _promptit
  79.             @ _atop + _starting, _aleft + 1 PROMPT " " + SUBSTR(Fill_out(_array[_qaz], _aover-2), 1, _aover)
  80.          ELSE
  81.             @ _atop + _starting, _aleft + 1 SAY " " + IF(LEN(_array[_qaz]) >_aover-2, SUBSTR(_array[_qaz], 1, _aover-2), _array[_qaz])
  82.          ENDIF
  83.          _starting = _starting + 1
  84.  
  85.          IF _qaz >= _ending      && simulate an EOF() condition
  86.             EXIT
  87.          ENDIF
  88.       NEXT
  89.       @ _atop+_adown-2, _aleft+1 SAY SUBSTR("ESC to Quit", 1, _aover-2)
  90.  
  91.       IF _qaz = _ending .AND. _screen = 1
  92.          * say nothing!
  93.       ELSEIF _qaz < _ending
  94.          @ _atop+_adown-1, _aleft+1 SAY SUBSTR("PgUp / PgDn", 1, _aover-2)
  95.       ELSE
  96.          @ _atop+_adown-1, _aleft+1 SAY SUBSTR("PgUp", 1, _aover-2)
  97.       ENDIF
  98.  
  99.       IF _promptit
  100.          MENU TO _opt
  101.          SET KEY 18 TO 
  102.          SET KEY  3 TO 
  103.       ELSE
  104.          INKEY(0)
  105.          DO CASE
  106.          CASE LASTKEY() = 27
  107.             _opt = 0
  108.          CASE LASTKEY() = 18
  109.             up = .T.
  110.             _opt = 0
  111.          CASE LASTKEY() = 3
  112.             down = .T.
  113.             _opt = 0
  114.          OTHERWISE
  115.             _opt = 1
  116.          ENDCASE
  117.  
  118.       ENDIF
  119.  
  120.       IF _opt = 0
  121.          DO CASE
  122.          CASE up .AND. !down
  123.             up = .F.
  124.             _screen = IF(_screen = 1, _screen, _screen - 1)
  125.          CASE down .AND. !up
  126.             down = .F.
  127.             _screen = _screen + 1
  128.             IF _screen > INT(LEN(_array)/_pscreen)+1 .OR. _qaz >= LEN(_array)
  129.                _screen = _screen - 1
  130.             ENDIF
  131.          OTHERWISE
  132.             EXIT
  133.          ENDCASE
  134.       ELSE
  135.          _opt = (_opt + (_pscreen * _screen)) - _pscreen
  136.          EXIT
  137.       ENDIF
  138.    ENDDO
  139.    Windowpop()
  140.    RETURN(_opt)
  141.  
  142. * End of File
  143.  
  144.