home *** CD-ROM | disk | FTP | other *** search
-
- !═════════════════════════════════════════════════════════════════════════
- !
- ! %%keyword%% '%n'
- ! 'ME_MOVE.CLA' - Cursor Movement Functions for MEMOEDIT
- !
- ! %%keyword%% '%v'
- ! Revision Number: '1'
- ! %%keyword%% '%d'
- ! Revision Date : '15-Feb-92'
- !
- ! Copyright : Bobcat Systems (c) 1992
- ! Author : Robert J. Pupazzoni
- ! CIS:[70441,204]
- !
- ! Compiler : Clarion Professional Developer v. 2.1, Batch 2105
- !
- !
- ! DESCRIPTION
- !
- ! This module contains functions which move the cursor.
- !
- !═════════════════════════════════════════════════════════════════════════
-
- ME_Move MEMBER()
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Fix Cursor Column Position
- ! ═════════════════════════════════════════════════════════════════════════
- Fix_Column FUNCTION( sLine, ibCol )
-
- ! Parameters:
- sLine EXTERNAL ! Text of current line
- ibCol BYTE ! Cursor column
-
- ! Locals:
- ibHCRCol BYTE ! Hard CR column
-
- CODE
- ibHCRCol = INSTRING(eHCRCode, sLine, 1) ! Look for hard CR
- ! Adjust cursor if found
- IF ibHCRCol THEN ibCol = Lesser_Of(ibHCRCol, ibCol).
- RETURN( ibCol ) ! Return new cursor column
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Move cursor left
- ! ═════════════════════════════════════════════════════════════════════════
- Move_Left PROCEDURE( ibCol )
-
- ! Parameters:
- ibCol EXTERNAL ! Cursor column
-
- CODE
- ibCol = Greater_Of(ibCol-1, 1) ! Adjust cursor column
- RETURN !
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Move cursor right
- ! ═════════════════════════════════════════════════════════════════════════
- Move_Right PROCEDURE( ibCol )
-
- ! Parameters:
- ibCol EXTERNAL ! Cursor column
-
- CODE
- ibCol = Lesser_Of(ibCol+1, MED:ibCols) ! Adjust cursor column
- RETURN !
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Move to beginning of line
- ! ═════════════════════════════════════════════════════════════════════════
- Move_BOL PROCEDURE( ibCol )
-
- ! Parameters:
- ibCol EXTERNAL ! Cursor column
-
- CODE
- ibCol = 1 ! Adjust cursor column
- RETURN !
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Move to end of line
- ! ═════════════════════════════════════════════════════════════════════════
- Move_EOL PROCEDURE( sLine, ibCol )
-
- ! Parameters:
- sLine EXTERNAL ! Text of current line
- ibCol EXTERNAL ! Cursor column
-
- CODE
- ibCol = LEN(CLIP(sLine)) + 1 ! Set cursor to last character
- ibCol = Lesser_Of(ibCol, MED:ibCols) ! Adjust limits
- RETURN !
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Move left by word
- ! ═════════════════════════════════════════════════════════════════════════
- Move_WLeft PROCEDURE( sLine, ibCol )
-
- ! Parameters:
- sLine EXTERNAL ! Text of current line
- ibCol EXTERNAL ! Cursor column
-
- CODE
- ibCol = Word_Left(sLine, ibCol-1) ! Find previous word
- RETURN !
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Move right by word
- ! ═════════════════════════════════════════════════════════════════════════
- Move_WRight PROCEDURE( sLine, ibCol )
-
- ! Parameters:
- sLine EXTERNAL ! Text of current line
- ibCol EXTERNAL ! Cursor column
-
- CODE
- ibCol = Word_Right(sLine, ibCol) ! Find previous word
- RETURN !
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Tab to the right
- ! ═════════════════════════════════════════════════════════════════════════
- Tab_Right PROCEDURE( ibCol )
-
- ! Parameters:
- ibCol EXTERNAL ! Cursor column
-
- CODE
- ibCol = 8 * (ibCol/8 + 1) ! Find next tab column
- ibCol = Lesser_Of(ibCol, MED:ibCols) ! Adjust limits
- RETURN !
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Move up one line
- ! ═════════════════════════════════════════════════════════════════════════
- Move_Up PROCEDURE( tTable, ilRowTop, ibRow )
-
- ! Parameters:
- tTable EXTERNAL,TABLE ! Edit buffer
- ilRowTop EXTERNAL ! Top line index
- ibRow EXTERNAL ! Cursor row
-
- CODE
- IF ilRowTop + ibRow = 1 ! If at first record
- ! Nothing ! Nothing to do
- ELSIF ibRow > 1 ! Else if not at first row
- ibRow -= 1 ! Move cursor up
- ELSE ! Else
- ilRowTop -= 1 ! Scroll up
- SCROLL(MED:ibRowOfs+1, MED:ibColOfs+1, MED:ibRows, MED:ibCols, -1)
- Show_Line(tTable, ilRowTop+1, ibRow) ! Fill top line
- . ! Endif
- RETURN !
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Move one line down
- ! ═════════════════════════════════════════════════════════════════════════
- Move_Down PROCEDURE(tTable, ilRowTop, ibRow)
-
- ! Parameters:
- tTable EXTERNAL,TABLE ! Edit buffer
- ilRowTop EXTERNAL ! Top line index
- ibRow EXTERNAL ! Cursor row
-
- CODE
- IF ilRowTop+ibRow = RECORDS(tTable) ! If at last record
- ! Nothing ! Nothing to do
- ELSIF ibRow < MED:ibRows ! Else if not on last row
- ibRow += 1 ! Move cursor down
- ELSE ! Else
- ilRowTop += 1 ! Scroll down
- SCROLL(MED:ibRowOfs+1, MED:ibColOfs+1, MED:ibRows, MED:ibCols, 1)
- Show_Line(tTable, ilRowTop+ibRow, ibRow) ! Fill bottom line
- . ! Endif
- RETURN !
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Scroll one page up
- ! ═════════════════════════════════════════════════════════════════════════
- Page_Up PROCEDURE( tTable, ilRowTop, ibRow )
-
- ! Parameters:
- tTable EXTERNAL,TABLE ! Edit buffer
- ilRowTop EXTERNAL ! Top line index
- ibRow EXTERNAL ! Cursor row
-
- CODE
- IF ilRowTop > MED:ibRows ! If previous page exists
- ilRowTop -= MED:ibRows ! Display previous page
- Show_Page(tTable, ilRowTop, 1, MED:ibRows) ! Display the page
- ELSE ! Else
- First_Page(tTable, ilRowTop, ibRow) ! Display first page
- . ! Endif
- RETURN !
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Scroll one page down
- ! ═════════════════════════════════════════════════════════════════════════
- Page_Down PROCEDURE( tTable, ilRowTop, ibRow )
-
- ! Parameters:
- tTable EXTERNAL,TABLE ! Edit buffer
- ilRowTop EXTERNAL ! Top line index
- ibRow EXTERNAL ! Cursor row
-
- CODE
- IF ilRowTop+MED:ibRows < RECORDS(tTable) ! If next page exists
- ilRowTop = Lesser_Of(ilRowTop+MED:ibRows, RECORDS(tTable))
- Show_Page(tTable, ilRowTop, 1, MED:ibRows) ! Display the page
- . ! Endif
- RETURN !
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Display first page
- ! ═════════════════════════════════════════════════════════════════════════
- First_Page PROCEDURE( tTable, ilRowTop, ibRow )
-
- ! Parameters:
- tTable EXTERNAL,TABLE ! Edit buffer
- ilRowTop EXTERNAL ! Top line index
- ibRow EXTERNAL ! Cursor row
-
- CODE
- ilRowTop = 0 ! Reset top row
- ibRow = 1 ! Move cursor to top line
- Show_Page(tTable, ilRowTop, 1, MED:ibRows) ! Display the page
- RETURN !
-
-
- ! ═════════════════════════════════════════════════════════════════════════
- ! Display last page
- ! ═════════════════════════════════════════════════════════════════════════
- Last_Page PROCEDURE( tTable, ilRowTop, ibRow )
-
- ! Parameters:
- tTable EXTERNAL,TABLE ! Edit buffer
- ilRowTop EXTERNAL ! Top line index
- ibRow EXTERNAL ! Cursor row
-
- CODE
- IF RECORDS(tTable) > MED:ibRows ! If more records than rows
- ilRowTop = RECORDS(tTable) - MED:ibRows ! Set top row
- ibRow = MED:ibRows ! Set cursor row
- ELSE ! Else
- ilRowTop = 0 ! Set top row
- ibRow = RECORDS(tTable) ! Set cursor row
- . ! Endif
- Show_Page(tTable, ilRowTop, 1, MED:ibRows) ! Display the page
- RETURN !
-
-