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