• Программы должны писаться для людей, которые будут их читать, а машины, которые будут эти программы исполнять — второстепенны.

Управление курсором в TextWindow

Вывод в консоли осуществляется функциями объекта (класса) TextWindow. Обычно он начинается с верхней левой позиции, координаты которой (0;0).

Мы можем выводить текст в TextWindow, используя функции TextWindow.Write() и TextWindow.WriteLine(). Функция TextWindow.WriteLine() также добавляет перевод на новую строку, чтобы поместить курсор в начало следующей строки.

При этом обе функции выводят текст в том месте, где в данный момент расположен курсор. Курсор при этом автоматически смещается в конец введенного текста.

Есть 2 свойства TextWindow, которые можно использовать для управления позицией курсора, это TextWindow.CursorLeft и TextWindow.CursorTop. Используя их, мы можем получить или установить позицию курсора.

В TextWindow 80 столбцов и 25 строк (по умолчанию). Свойство CursorLeft начинается со столбца 0 и может принимать максимальное значение — 79 (последний или 80-й столбец). CursorTop также индексируется с 0 до 24 (или больше).

Мы можем использовать эти свойства для различных задач. Самое простое, что можно сделать — просто выровнять столбцы данных, как это показано в следующем примере:

For i =1 To 20
    TextWindow.CursorTop = i-1
    For j = 1 To 5
        TextWindow. CursorLeft = (j-1)*80/5
		TextWindow.Write("Стр "+i)
		TextWindow.CursorLeft = (j-1)*80/5+8
		TextWindow.Write("Ст. "+j)
	EndFor
EndFor
TextWindow.WriteLine("")

Скопируйте этот код в среду разработки MS Small Basic и запустите. В консоли вы увидите красивые столбцы с данными.

До появления графического оконного интерфейса MS Windows все программы использовали в качестве интерфейса экран MS DOS — консоль аналогичную TextWIndow в Small Basic.

Всё то же самое можно делать, используя TextWIndow с применением свойств CursorLeft и CursorTop для изменения местоположения курсора при работе программы. Вы можете таким образом стирать текст в любом месте консоли, выводить новый текст в любое место и т.п.

Такой вид интерфейса все еще часто используется для коммерческих приложений ввода-вывода текстовых данных (например, в программах бронирования авиабилетов), поскольку этот интерфейс очень прост, надежен, требует минимум ресурсов и может быть очень эффективным при работе — даже без использования мыши.

В следующем примере создан экран ввода данных, где можно ввести имя, фамилию и возраст. Для перехода используется клавиша «Ввод» («Enter»). Ввод завершается переходом на поле ввод и нажатием клавиши «Y».

While (Text.ConvertToLowerCase(accept ) <> "y")
    NameForm()
EndWhile
TextWindow.Clear()
TextWindow.WriteLine(firstName+" "+lastName+" is "+age)
 
Sub NameForm
    TextWindow.Clear()
    TextWindow. CursorLeft  = 35
    TextWindow. CursorTop  = 0
    TextWindow.Write("ФОРМА ВВОДА ДАННЫХ")
    TextWindow. CursorLeft  = 0
    TextWindow. CursorTop  = 2
    TextWindow.Write("ИМЯ :")
    TextWindow. CursorLeft  = 0
    TextWindow. CursorTop  = 4
    TextWindow.Write("ФАМИЛИЯ :")
    TextWindow. CursorLeft  = 0
    TextWindow. CursorTop  = 6
    TextWindow.Write("ВОЗРАСТ :")
    TextWindow. CursorLeft  = 40
    TextWindow. CursorTop  = 6
    TextWindow.Write("ВВОД (Y)")
    TextWindow. CursorLeft  = 15
    TextWindow. CursorTop  = 2
    firstName  = TextWindow.Read()
    TextWindow. CursorLeft  = 15
    TextWindow. CursorTop  = 4
    lastName  = TextWindow.Read()
    TextWindow. CursorLeft  = 15
    TextWindow. CursorTop  = 6
    age  = TextWindow.ReadNumber()
    TextWindow. CursorLeft  = 55
    TextWindow. CursorTop  = 6
   accept  = TextWindow.Read()
EndSub

Как видите, это довольно простой и эффективный способ организации интерфейса ввода-вывода вашей программы, который вы можете легко использовать.

 

Поделиться: