home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / s / s9302.zip / RUBEL.ZIP / MEMO_POP.PRG < prev   
Text File  |  1993-01-06  |  2KB  |  118 lines

  1. FUNCTION memo_pop
  2. PARAMETERS sul_row,sul_col,slr_row,slr_col,m_name
  3. PRIVATE m_width, m_height, m_mark, m_max
  4. PRIVATE cur_curs, cur_wid, xx, m_key
  5.  
  6. * Copyright (c) 1992 Performance Dynamics Associates
  7. * Stripped-down version of Power Tools memo_pop function
  8.  
  9. m_width = slr_col - sul_col - 3
  10. m_height = slr_row - sul_row - 1
  11.  
  12. cur_wid = set('memowidth')
  13. SET memowidth to m_width
  14.  
  15. cur_curs = set('cursor') = 'ON'
  16. SET CURSOR OFF
  17.  
  18. m_max = memlines(&m_name)
  19. m_mark = m_height
  20.  
  21. DEFINE WINDOW memo_temp FROM sul_row,sul_col ;
  22.                         TO slr_row,slr_col ;
  23.                         DOUBLE
  24. ACTIVATE WINDOW memo_temp
  25.  
  26. DO memopop1            &&  paint the first window
  27.  
  28. DO WHILE .t.
  29.   m_key = 0
  30.  
  31.   DO WHILE m_key = 0
  32.     m_key = inkey()
  33.   ENDDO
  34.  
  35.   IF m_key = 27 .or. m_key = 23
  36.     EXIT
  37.   ENDIF
  38.  
  39.   DO CASE
  40.  
  41.     CASE m_key = 24           &&  cursor down
  42.  
  43.       IF m_mark < m_max
  44.         m_mark = m_mark + 1
  45.         ? ' ' + mline(&m_name,m_mark)
  46.      ELSE
  47.         ?? chr(7)
  48.       ENDIF
  49.  
  50.     CASE m_key = 5            &&  cursor up
  51.  
  52.       IF m_mark # m_height
  53.         m_mark = max(m_mark-1, m_height)
  54.         DO memopop1
  55.       ELSE
  56.         ?? chr(7)
  57.       ENDIF
  58.  
  59.     CASE m_key = 18           &&  page up
  60.  
  61.       IF m_mark > m_height
  62.         m_mark = max(m_height, m_mark-m_height+1)
  63.         DO memopop1
  64.       ELSE
  65.         ?? chr(7)
  66.       ENDIF
  67.  
  68.     CASE m_key = 3            &&  page down
  69.  
  70.       IF m_mark # m_max
  71.         m_mark = min(m_max, m_mark+m_height-1)
  72.         DO memopop1
  73.       ELSE
  74.         ?? chr(7)
  75.       ENDIF
  76.  
  77.     CASE m_key = 26           &&  home key
  78.       m_mark = m_height
  79.       DO memopop1
  80.  
  81.     CASE m_key = 2            &&  end key
  82.       m_mark = m_max
  83.       DO memopop1
  84.  
  85.   ENDCASE
  86. ENDDO
  87. RELEASE WINDOW memo_temp
  88. SET MEMOWIDTH TO cur_wid
  89.  
  90. IF cur_curs
  91.   SET CURSOR ON
  92. ENDIF
  93.  
  94. IF isblank(cur_win)
  95.   ACTIVATE SCREEN
  96. ENDIF
  97.  
  98. RETURN(m_max)
  99.  
  100. ********
  101.  
  102. PROCEDURE memopop1
  103.  
  104. ***  paint the window
  105.  
  106. CLEAR
  107. xx = 1
  108.  
  109. DO WHILE xx < = m_height
  110. @@ xx-1,1 SAY mline(&m_name,m_mark-m_height+xx)
  111.   xx = xx + 1
  112. ENDDO
  113.  
  114. RETURN
  115.  
  116. ********
  117.  
  118.