Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Проблема с меню

Автор: mr. 14.04.2006 2:19

Делаю простенькое динамическое меню, с пунктами play,info,exit. ну так вот все работает почти как надо, но есть проблема с GotoXY, который упорно не работает smile.gif по идее этого меню для того чтобы выделить активный элемент, заново выводится до этого бывший активным но с другой заливкой, а потом выводится активный. при этом gotoxy должен переводить курсор перед выводом на зарезервированные икс и игрек выводимого элемента. тогда меню стоит на месте, но gotoxy не работает и просто выводятся новые элементы все дальше и дальше с каждым нажатием вверз или вниз. Помогите пожалуйста. Основное внимание на процедуру ShowItem, она как раз и выводит)

вот файл модуля меню и файл проги.

п.с. задание само под пунктом меню Play, оно графическое просто с каждым нажатием enter выводит рандомный квадрат smile.gif


Прикрепленные файлы
Прикрепленный файл  MENU.PAS ( 3.94 килобайт ) Кол-во скачиваний: 207
Прикрепленный файл  GRAPHIC.PAS ( 1.08 килобайт ) Кол-во скачиваний: 202

Автор: volvo 14.04.2006 2:24

Цитата
есть проблема с GotoXY, который упорно не работает
Как ты хочешь, чтобы работал GotoXY, если координаты, которые ты ему передаешь, больше чем размеры экрана? Ты не забыл, что максимум для ТЕКСТОВОГО режима (а GotoXY - текстовая процедура) - 25/50 строк на 80 столбцов?

Автор: mr. 14.04.2006 2:28

я не забыл это, но просто не понимаю что передавать то тогда. там же передаются коорты элементов, а элементы привязаны к коортам меню, а меню в пределах экрана unsure.gif

Автор: volvo 14.04.2006 2:32

А меню-то графическое...
А графический экран - это 640 х 480 !!! Вот и рассчитывай, сколько пикселей соответствуют одной текстовой позиции по вертикали и горизонтали, и передавай в GotoXY текстовые координаты, соответствующие нужным тебе графическим...

Автор: mr. 14.04.2006 2:42

Код
procedure ShowItem(var PShow:PItem;P:PMenu);
        begin
        if Pshow^.Active=true then begin
        TextBackGround(P^.col2);
        TextColor(P^.col1);
        end
        else begin
        TextColor(15);
        TextBackGround(0);
        end;
        GotoXY(Pshow^.x,Pshow^.y);
        write(Pshow^.key);
        end;


меню текстовое. под заливкой я имел ввиду textbackground.

mega_chok.gif хахахах я все сделал! ты был прав, но я передавал не больше а меньше чем надо то есть коорты меню должны были быть 1,1. а были 0,0 =))) спасибо)