Sets the cursor form

     SETCURSOR([[<nCursorType>],[<lMode>]]) --> nCursor


     SETCURSOR([[<idCursorForm>],[<lMode>]]) --> nCursor


     SETCURSOR([[<nTopLine>,<nBottomLine>], [<lMode>]])
        --> nCursor


     <nCursorType>  Designates a cursor type between 0 and 4 (see Clipper
     5.0, SETCURS.CH).

     <idCursorForm>  Designates a value previously returned from this
     function.  The <nCursor> return value is a 16-bit integer.

     <nTopLine>  Designates the beginning scan line of the new cursor.

     <nBottomLine>  Designates the ending scan line of the new cursor.

     <lMode>  Designates whether the cursor is set to the overwrite (.F.)
     or the insert (.T.) mode.  The default value (.F.) designates that the
     cursor is set to the overwrite mode.


     If the SETCURSOR() function is called with parameters, it returns the
     previous setting.  When the function is called without parameters, it
     returns the current cursor setting.  When a value between 0 and 4 is
     returned, then the cursor type was set through CA-Clipper's SETCURSOR()
     function.  When the return value is less than 0, the return value is the
     cursor value that had been set using <nTopLine> and <nBottomLine>.


     SETCURSOR() is also a function under CA-Clipper.   The CA-Clipper Tools
     implementation makes several extensions available over and above the
     CA-Clipper function.  When the CTUS.LIB extended driver is linked in,
     these extensions become available.

     One method for using the SETCURSOR() function is with only a numeric
     parameter between 0 and 4.  With this parameter, the function is
     CA-Clipper compatible.  Please refer to your CA-Clipper documentation
     for the cursor type corresponding to the individual values.

     The second method for using the SETCURSOR() is exclusively for restoring
     a cursor type previously saved from the return value.  A cursor saved
     using GETCURSOR() can also be implemented this way, however, use of the
     GETCURSOR() function for the creation of new applications is not

     The third and last method allows you to implement a cursor completely of
     your own design by specifying the start and stop pixel lines.  Specify
     the <nTopLine> and <nBottomLine>; the first parameter serves as the
     start line, and the second parameter serves as the end line for the
     cursor display.

     In all three variants of this function's syntax, you can determine the
     type of cursor you want to change, in the overwrite or the insert modes,
     by specifying <lMode>.


       The range used for the <nTopLine> and <nBottomLine> parameters
        is dependent on the screen adapter used and the font installed.

       To preserve complete compatibility with the former version of
        the function call without parameter, CT.CH must be linked in.


       In this example, the cursor for both modes is saved, and then

        nNormCursor  :=  SETCURSOR(.F.)         // Overwrite mode
        nInsCursor   :=  SETCURSOR(.T.)         // Insert mode

        * Cursor is changed in the program

        SETCURSOR(nNormCursor, .F.)             // Reset cursor
        SETCURSOR(nInsCursor, .T.)              // Reset cursor

       Here is an example of a setting using the first and last pixel

        SETCURSOR(10, 13)                       // Cursor as thick
                                                // underscore

 To download this example - click here.