LOCATE
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgLocate
- 最后更新: 2022-03-25
设置当前光标位置
语法
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用法
Locate [row], [column], [state]
result = Locate( [row], [column], [state] )
new_column = lobyte( result )
new_row = hibyte( result )
new_state = hiword( result )参数
row
控制台中以1为基的垂直字符位置。
column
控制台中以1为基的水平字符位置。
state
仅在控制台模式下的光标状态:0 表示关闭,1 表示开启;图形模式下文本光标始终不可见。
start
已忽略。仅为兼容 -lang qb 方言而保留。
stop
已忽略。仅为兼容 -lang qb 方言而保留。
返回值
返回一个包含当前光标位置和状态的32位 Long。低字的低字节包含列号,低字的高字节包含行号,高字包含光标状态。
若调用 Locate 时刚好设置了 row、column 或 state 中的任何参数,则返回值将反映这些新值,而非之前的值。若调用 Locate 时省略了任何参数,则返回值将反映当前值,与调用前相同。
Locate 将尝试将光标定位到指定的行和列。若位置超出屏幕范围,光标将不会重新定位。下一次向屏幕 Print 时将从最后有效的光标位置继续。当在屏幕最后一行打印时,若 Print 语句包含换行符,屏幕将自动滚动并将光标重新定位到最后一行第1列。
说明
在图形模式和控制台模式下均可设置文本光标。
示例
start GeSHi
vb
Locate 10
Print "Current line:"; CsrLinend GeSHi
start GeSHi
vb
'' 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
与 QB 的差异
- FreeBASIC 中
start和stop参数无效。 - 若
row或column超出屏幕范围,QB 会触发错误。
另请参阅
CsrlinPosPrint?
返回 目录