![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по Паскалю: как сделать курсор невидимым?
Брат © (2002-03-13 09:47:00)Как сделать курсор невидимым? Пишу на ТурбоПаскале курсак под ДОС, нарисовал менюшку. Все бы хорошо, но курсор не могу спрятать.
EsKor (2002-03-14 07:43:00) [1]Да, никаких процедур для сокрытия курсора в "стандартной поставке" не имеется. Если не связываться с ассемблером, то достаточно заиметь в каталоге TPU один модуль из библиотеки Turbo Professional - это TPCrt.tpu или его исходник TPCrt.pas.
Возможности его не ограничиваются только сокрытием курсора.
Если кому надо могу прислать. Исходника в настоящий момент у меня нет, а TPCrt.tpu есть и весит он 34кБ.
~Sergius (2002-03-14 03:15:00) [2]2 EsKor
Никаких процедур для сокрытия курсора в "стандартной поставке" не имеется :-(
~Sergius (2002-03-14 03:13:00) [3]А чтоб вопрос задали такой, на котороый было бы легко ответить, просто можно увести курсор за пределы отображаемого экрана в данном видеорежиме, напр. на 26 строку в 80x25.
Т.е, вместо использования BIOS set cursor type (AH=01)использовать BIOS set cursor position (AH=02h). Оно куда легче объяснимо. В DH задаешь строку, в DL -- колонку:
asm
mov ah,02h
mov dh,0h
mov dl,30
int 10h
end;
Но вывод на экран, разумеется при этом нужно делать напрямую в видеопамять, без всяких Write
НО! так как использование ассемблера в любом случае вызовет вопросы -- то... пусть он выбирает, что он сможетобъяснить. По-другому все-равно не сделаешь
EsKor (2002-03-14 03:07:00) [4]Обычно с Turbo Pascal-ем используют библиотеку Turbo Professional. Тогда для скрытия и отображения курсора используют
вызов процедур HiddenCursor и NormalCursor соответственно. На всякий случай проверьте нет ли их в стандартном TP. Может я ошибаюсь и дополнительная библиотека не нужна.
Кстати в этой библиотеке есть хорошие модули для работы с окнами (TPWindow) и меню (TPMenu).
Anatoly Podgoretsky (2002-03-13 22:51:00) [5]Андрей Сенченко © (13.03.02 12:10)
А если чего доброго вопрос зададут?
Брат (2002-03-13 14:00:00) [6]Спасибо!
Дело в том, что я соседу курсак пишу. С ним я договорился: без комментариев. Так что это уже как бы и не мое дело.
Андрей Сенченко (2002-03-13 12:10:00) [7]Дык ить препода в курсаче наткнутся на ассемблерный код и еще чего доброго вопрос зададут ...
Советую сделать так:
var
r:registers;
Procedure CursorOn;
begin
with r do
begin
AH := 1;
CH := 6;
CL := 7;
end;
Intr($10,r);
end;
Procedure CursorOff;
begin
with r do
begin
AH := 1;
CH := $20;
end;
Intr($10,r);
end;
И на глупые вопросы препода из серии "где взял ?" отвечать уже не "В ГУМе купил", а вполне конкретно: в книжке Фаронова по TP 5.0
Nebula (2002-03-13 10:00:00) [8]Procedure CursorOn; Assembler;
Asm
mov ah,1
mov ch,6
mov cl,7
int $10
End;
Procedure CursorOff; Assembler;
Asm
mov ah,1
mov ch,$20
int $10
End;
Советую скачать Tech help, старая базенка для DOS программистов, там много интересного, в свое время цены ей не было. Плюс еще список перывания Ральфа Брауна. Было время.