Так же, лучше сразу создать свои функции для таких простых операций как позиционирование курсора, очистки экрана и отображение/скрытие курсора (так как в консольных API они немножко громозки и запутаны). Вот как они выглядят:
Code: |
//----------------------------------------- // Установка курсора в координаты X, Y //----------------------------------------- procedure GotoXY(X, Y: Word); begin Coord.X := X; Coord.Y := Y; SetConsoleCursorPosition(ConHandle, Coord); end;
//----------------------------------------- // Очистка экрана - заполнение его пробелами //----------------------------------------- procedure Cls; begin Coord.X := 0; Coord.Y := 0; FillConsoleOutputCharacter(ConHandle, ' ', MaxX * MaxY, Coord, NOAW); GotoXY(0, 0); end;
//-------------------------------------- // Показываем/Скрываем курсор //-------------------------------------- procedure ShowCursor(Show: Bool); begin CCI.bVisible := Show; SetConsoleCursorInfo(ConHandle, CCI); end; |
Как Вы успели заметить, мы воспользовались четырьмя функциями консольного API: GetStdHandle, SetConsoleCursorPosition, FillConsoleOutputCharacter, SetConsoleCursorInfo. Иногда может возникнуть задача определения размера консольного окна по вертикали и по горизонтали. Для этого мы создадим две переменные: MaxX и MaxY, типа WORD:
Code: |
//-------------------------------------- // Инициализация глобальных переменных //-------------------------------------- procedure Init; begin // Получаем дескриптор вывода (output) ConHandle := GetConOutputHandle; // Получаем максимальные размеры окна Coord := GetLargestConsoleWindowSize(ConHandle); MaxX := Coord.X; MaxY := Coord.Y; end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!