LOCATE
- Source: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgLocate
- Last revised: 2022-03-25
Sets the current cursor position
Syntax
` declare function Locate( row as long = 0, column as long = 0, state as long = -1, start as long = 0, stop as long = 0 ) as long
`
Usage
Locate [row], [column], [state]
result = Locate( [row], [column], [state] )
new_column = lobyte( result )
new_row = hibyte( result )
new_state = hiword( result )Parameters
row
the 1-based vertical character position in the console.
column
the 1-based horizontal character position in the console.
state
the state of the cursor in console-mode only: 0 is off, 1 is on; text cursor is never visible in graphics mode.
start
Ignored. Allowed for -lang qb dialect compatibility only.
stop
Ignored. Allowed for -lang qb dialect compatibility only.
Return Value
Returns a 32 bit Long containing the current cursor position and state. The low byte of the low word contains the column, the high byte of the low word contains the row, and the high word contains the cursor state.
If any of the row, column or state parameters were just set by the call to Locate, then the return value will reflect these new values, not the previous ones. If any of the parameters were omitted in the call to Locate, then the return value will reflect the current values, which are the same as before the call to Locate.
Locate will attempt to position the cursor at the specified row and column. If the position is beyond the screen extents, cursor will not reposition. And next Print to the screen will continue at last valid cursor position. When printing to the last line of the screen, and the Print statement has a new line character, the screen will scroll and reposition the cursor automatically to the last line, column 1.
Description
Sets the text cursor in both graphics and console modes.
Examples
start GeSHi
Locate 10
Print "Current line:"; CsrLinend GeSHi
start GeSHi
'' Text cursor + mouse tracking
Dim As Long x = 0, y = 0, dx, dy
Cls
Locate , , 1
While Inkey <> Chr(27)
GetMouse dx, dy
If( dx <> x Or dy <> y ) Then
Locate y+1, x+1: Print " ";
x = dx
y = dy
Locate 1, 1: Print x, y, ""
Locate y+1, x+1: Print "X";
End If
Wendend GeSHi
Differences from QB
- The
startandstoparguments have no effect in FreeBASIC. - QB will raise an error if
roworcolumnare beyond the screen extents.
See also
CsrlinPosPrint?
Back to DocToc