Помощь - Поиск - Пользователи - Календарь
Полная версия: Проблема с меню
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
mr.
Делаю простенькое динамическое меню, с пунктами play,info,exit. ну так вот все работает почти как надо, но есть проблема с GotoXY, который упорно не работает smile.gif по идее этого меню для того чтобы выделить активный элемент, заново выводится до этого бывший активным но с другой заливкой, а потом выводится активный. при этом gotoxy должен переводить курсор перед выводом на зарезервированные икс и игрек выводимого элемента. тогда меню стоит на месте, но gotoxy не работает и просто выводятся новые элементы все дальше и дальше с каждым нажатием вверз или вниз. Помогите пожалуйста. Основное внимание на процедуру ShowItem, она как раз и выводит)

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

п.с. задание само под пунктом меню Play, оно графическое просто с каждым нажатием enter выводит рандомный квадрат smile.gif
volvo
Цитата
есть проблема с GotoXY, который упорно не работает
Как ты хочешь, чтобы работал GotoXY, если координаты, которые ты ему передаешь, больше чем размеры экрана? Ты не забыл, что максимум для ТЕКСТОВОГО режима (а GotoXY - текстовая процедура) - 25/50 строк на 80 столбцов?
mr.
я не забыл это, но просто не понимаю что передавать то тогда. там же передаются коорты элементов, а элементы привязаны к коортам меню, а меню в пределах экрана unsure.gif
volvo
А меню-то графическое...
А графический экран - это 640 х 480 !!! Вот и рассчитывай, сколько пикселей соответствуют одной текстовой позиции по вертикали и горизонтали, и передавай в GotoXY текстовые координаты, соответствующие нужным тебе графическим...
mr.
Код
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 =))) спасибо)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.