home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / clarion / library / memoed / me_move.cla < prev    next >
Text File  |  1992-02-15  |  8KB  |  264 lines

  1.  
  2. !═════════════════════════════════════════════════════════════════════════
  3. !
  4. !  %%keyword%% '%n'
  5. !  'ME_MOVE.CLA' - Cursor Movement Functions for MEMOEDIT
  6. !
  7. !  %%keyword%% '%v'
  8. !  Revision Number: '1'
  9. !  %%keyword%% '%d'
  10. !  Revision Date  : '15-Feb-92'
  11. !
  12. !  Copyright : Bobcat Systems (c) 1992
  13. !  Author    : Robert J. Pupazzoni
  14. !           CIS:[70441,204]
  15. !
  16. !  Compiler  : Clarion Professional Developer v. 2.1, Batch 2105
  17. !
  18. !
  19. !  DESCRIPTION
  20. !
  21. !    This module contains functions which move the cursor.
  22. !
  23. !═════════════════════════════════════════════════════════════════════════
  24.  
  25. ME_Move         MEMBER()
  26.  
  27. ! ═════════════════════════════════════════════════════════════════════════
  28. !             Fix Cursor Column Position
  29. ! ═════════════════════════════════════════════════════════════════════════
  30. Fix_Column   FUNCTION( sLine, ibCol )
  31.  
  32.          ! Parameters:
  33. sLine         EXTERNAL                 ! Text of current line
  34. ibCol         BYTE                 ! Cursor column
  35.  
  36.          ! Locals:
  37. ibHCRCol     BYTE                 ! Hard CR column
  38.  
  39.   CODE
  40.   ibHCRCol = INSTRING(eHCRCode, sLine, 1)     ! Look for hard CR
  41.                          ! Adjust cursor if found
  42.   IF ibHCRCol THEN ibCol = Lesser_Of(ibHCRCol, ibCol).
  43.   RETURN( ibCol )                 ! Return new cursor column
  44.  
  45.  
  46. ! ═════════════════════════════════════════════════════════════════════════
  47. !                Move cursor left
  48. ! ═════════════════════════════════════════════════════════════════════════
  49. Move_Left    PROCEDURE( ibCol )
  50.  
  51.          ! Parameters:
  52. ibCol         EXTERNAL                 ! Cursor column
  53.  
  54.   CODE
  55.   ibCol = Greater_Of(ibCol-1, 1)         ! Adjust cursor column
  56.   RETURN                     !
  57.  
  58.  
  59. ! ═════════════════════════════════════════════════════════════════════════
  60. !                Move cursor right
  61. ! ═════════════════════════════════════════════════════════════════════════
  62. Move_Right   PROCEDURE( ibCol )
  63.  
  64.          ! Parameters:
  65. ibCol         EXTERNAL                 ! Cursor column
  66.  
  67.   CODE
  68.   ibCol = Lesser_Of(ibCol+1, MED:ibCols)     ! Adjust cursor column
  69.   RETURN                     !
  70.  
  71.  
  72. ! ═════════════════════════════════════════════════════════════════════════
  73. !                Move to beginning of line
  74. ! ═════════════════════════════════════════════════════════════════════════
  75. Move_BOL     PROCEDURE( ibCol )
  76.  
  77.          ! Parameters:
  78. ibCol         EXTERNAL                 ! Cursor column
  79.  
  80.   CODE
  81.   ibCol = 1                     ! Adjust cursor column
  82.   RETURN                     !
  83.  
  84.  
  85. ! ═════════════════════════════════════════════════════════════════════════
  86. !                Move to end of line
  87. ! ═════════════════════════════════════════════════════════════════════════
  88. Move_EOL     PROCEDURE( sLine, ibCol )
  89.  
  90.          ! Parameters:
  91. sLine         EXTERNAL                 ! Text of current line
  92. ibCol         EXTERNAL                 ! Cursor column
  93.  
  94.   CODE
  95.   ibCol = LEN(CLIP(sLine)) + 1             ! Set cursor to last character
  96.   ibCol = Lesser_Of(ibCol, MED:ibCols)         ! Adjust limits
  97.   RETURN                     !
  98.  
  99.  
  100. ! ═════════════════════════════════════════════════════════════════════════
  101. !                Move left by word
  102. ! ═════════════════════════════════════════════════════════════════════════
  103. Move_WLeft   PROCEDURE( sLine, ibCol )
  104.  
  105.          ! Parameters:
  106. sLine         EXTERNAL                 ! Text of current line
  107. ibCol         EXTERNAL                 ! Cursor column
  108.  
  109.   CODE
  110.   ibCol = Word_Left(sLine, ibCol-1)         ! Find previous word
  111.   RETURN                     !
  112.  
  113.  
  114. ! ═════════════════════════════════════════════════════════════════════════
  115. !                Move right by word
  116. ! ═════════════════════════════════════════════════════════════════════════
  117. Move_WRight  PROCEDURE( sLine, ibCol )
  118.  
  119.          ! Parameters:
  120. sLine         EXTERNAL                 ! Text of current line
  121. ibCol         EXTERNAL                 ! Cursor column
  122.  
  123.   CODE
  124.   ibCol = Word_Right(sLine, ibCol)         ! Find previous word
  125.   RETURN                     !
  126.  
  127.  
  128. ! ═════════════════════════════════════════════════════════════════════════
  129. !                Tab to the right
  130. ! ═════════════════════════════════════════════════════════════════════════
  131. Tab_Right    PROCEDURE( ibCol )
  132.  
  133.          ! Parameters:
  134. ibCol         EXTERNAL                 ! Cursor column
  135.  
  136.   CODE
  137.   ibCol = 8 * (ibCol/8 + 1)             ! Find next tab column
  138.   ibCol = Lesser_Of(ibCol, MED:ibCols)         ! Adjust limits
  139.   RETURN                     !
  140.  
  141.  
  142. ! ═════════════════════════════════════════════════════════════════════════
  143. !                Move up one line
  144. ! ═════════════════════════════════════════════════════════════════════════
  145. Move_Up         PROCEDURE( tTable, ilRowTop, ibRow )
  146.  
  147.          ! Parameters:
  148. tTable         EXTERNAL,TABLE             ! Edit buffer
  149. ilRowTop     EXTERNAL                 ! Top line index
  150. ibRow         EXTERNAL                 ! Cursor row
  151.  
  152.   CODE
  153.   IF ilRowTop + ibRow = 1             ! If at first record
  154.     ! Nothing                     !   Nothing to do
  155.   ELSIF ibRow > 1                 ! Else if not at first row
  156.     ibRow -= 1                     !   Move cursor up
  157.   ELSE                         ! Else
  158.     ilRowTop -= 1                 !   Scroll up
  159.     SCROLL(MED:ibRowOfs+1, MED:ibColOfs+1, MED:ibRows, MED:ibCols, -1)
  160.     Show_Line(tTable, ilRowTop+1, ibRow)     !   Fill top line
  161.   .                         ! Endif
  162.   RETURN                     !
  163.  
  164.  
  165. ! ═════════════════════════════════════════════════════════════════════════
  166. !                Move one line down
  167. ! ═════════════════════════════════════════════════════════════════════════
  168. Move_Down    PROCEDURE(tTable, ilRowTop, ibRow)
  169.  
  170.          ! Parameters:
  171. tTable         EXTERNAL,TABLE             ! Edit buffer
  172. ilRowTop     EXTERNAL                 ! Top line index
  173. ibRow         EXTERNAL                 ! Cursor row
  174.  
  175.   CODE
  176.   IF ilRowTop+ibRow = RECORDS(tTable)         ! If at last record
  177.     ! Nothing                     !   Nothing to do
  178.   ELSIF ibRow < MED:ibRows             ! Else if not on last row
  179.     ibRow += 1                     !   Move cursor down
  180.   ELSE                         ! Else
  181.     ilRowTop += 1                 !   Scroll down
  182.     SCROLL(MED:ibRowOfs+1, MED:ibColOfs+1, MED:ibRows, MED:ibCols, 1)
  183.     Show_Line(tTable, ilRowTop+ibRow, ibRow)     !   Fill bottom line
  184.   .                         ! Endif
  185.   RETURN                     !
  186.  
  187.  
  188. ! ═════════════════════════════════════════════════════════════════════════
  189. !                Scroll one page up
  190. ! ═════════════════════════════════════════════════════════════════════════
  191. Page_Up         PROCEDURE( tTable, ilRowTop, ibRow )
  192.  
  193.          ! Parameters:
  194. tTable         EXTERNAL,TABLE             ! Edit buffer
  195. ilRowTop     EXTERNAL                 ! Top line index
  196. ibRow         EXTERNAL                 ! Cursor row
  197.  
  198.   CODE
  199.   IF ilRowTop > MED:ibRows             ! If previous page exists
  200.     ilRowTop -= MED:ibRows             !   Display previous page
  201.     Show_Page(tTable, ilRowTop, 1, MED:ibRows)     ! Display the page
  202.   ELSE                         ! Else
  203.     First_Page(tTable, ilRowTop, ibRow)         !  Display first page
  204.   .                         ! Endif
  205.   RETURN                     !
  206.  
  207.  
  208. ! ═════════════════════════════════════════════════════════════════════════
  209. !                Scroll one page down
  210. ! ═════════════════════════════════════════════════════════════════════════
  211. Page_Down    PROCEDURE( tTable, ilRowTop, ibRow )
  212.  
  213.          ! Parameters:
  214. tTable         EXTERNAL,TABLE             ! Edit buffer
  215. ilRowTop     EXTERNAL                 ! Top line index
  216. ibRow         EXTERNAL                 ! Cursor row
  217.  
  218.   CODE
  219.   IF ilRowTop+MED:ibRows < RECORDS(tTable)     ! If next page exists
  220.     ilRowTop = Lesser_Of(ilRowTop+MED:ibRows, RECORDS(tTable))
  221.     Show_Page(tTable, ilRowTop, 1, MED:ibRows)     ! Display the page
  222.   .                         ! Endif
  223.   RETURN                     !
  224.  
  225.  
  226. ! ═════════════════════════════════════════════════════════════════════════
  227. !                Display first page
  228. ! ═════════════════════════════════════════════════════════════════════════
  229. First_Page   PROCEDURE( tTable, ilRowTop, ibRow )
  230.  
  231.          ! Parameters:
  232. tTable         EXTERNAL,TABLE             ! Edit buffer
  233. ilRowTop     EXTERNAL                 ! Top line index
  234. ibRow         EXTERNAL                 ! Cursor row
  235.  
  236.   CODE
  237.   ilRowTop = 0                     ! Reset top row
  238.   ibRow       = 1                     ! Move cursor to top line
  239.   Show_Page(tTable, ilRowTop, 1, MED:ibRows)     ! Display the page
  240.   RETURN                     !
  241.  
  242.  
  243. ! ═════════════════════════════════════════════════════════════════════════
  244. !                Display last page
  245. ! ═════════════════════════════════════════════════════════════════════════
  246. Last_Page    PROCEDURE( tTable, ilRowTop, ibRow )
  247.  
  248.          ! Parameters:
  249. tTable         EXTERNAL,TABLE             ! Edit buffer
  250. ilRowTop     EXTERNAL                 ! Top line index
  251. ibRow         EXTERNAL                 ! Cursor row
  252.  
  253.   CODE
  254.   IF RECORDS(tTable) > MED:ibRows         ! If more records than rows
  255.     ilRowTop = RECORDS(tTable) - MED:ibRows     !   Set top row
  256.     ibRow    = MED:ibRows             !   Set cursor row
  257.   ELSE                         ! Else
  258.     ilRowTop = 0                 !   Set top row
  259.     ibRow    = RECORDS(tTable)             !   Set cursor row
  260.   .                         ! Endif
  261.   Show_Page(tTable, ilRowTop, 1, MED:ibRows)     ! Display the page
  262.   RETURN                     !
  263.  
  264.