Skip to content

LOCATE


设置当前光标位置

语法

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 时刚好设置了 rowcolumnstate 中的任何参数,则返回值将反映这些新值,而非之前的值。若调用 Locate 时省略了任何参数,则返回值将反映当前值,与调用前相同。

Locate 将尝试将光标定位到指定的行和列。若位置超出屏幕范围,光标将不会重新定位。下一次向屏幕 Print 时将从最后有效的光标位置继续。当在屏幕最后一行打印时,若 Print 语句包含换行符,屏幕将自动滚动并将光标重新定位到最后一行第1列。

说明

在图形模式和控制台模式下均可设置文本光标。

示例

start GeSHi

vb
Locate 10
Print "Current line:"; CsrLin

end 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
Wend

end GeSHi

与 QB 的差异

  • FreeBASIC 中 startstop 参数无效。
  • rowcolumn 超出屏幕范围,QB 会触发错误。

另请参阅

  • Csrlin
  • Pos
  • Print
  • ?

返回 目录

基于 FreeBASIC 官方文档翻译 如有侵权请联系我们删除
FreeBASIC 是开源项目,与微软公司无隶属关系