forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   как сделать ссылку назад? (http://forum.boolean.name/showthread.php?t=7604)

ЯМАКc 09.01.2009 00:22

как сделать ссылку назад?
 
как мне сделат ссылку назад т.е обратно в меню вот код:


Код:

Program MenuDemo;
Uses        menu32, vscroll, font32;
Var                key: integer;
Color, i, x, y, wi, hi, len, y_max, red, green, text_height, blue, color_mode: integer;
clicked, select: command;

Procedure ch;
begin

        SetColor(255, 255, 255); FillRect(0, 0, wi, hi);
Loadvscroll(LoadImage('/vscroll.png')); // Загрузка скина для скроллера
        SetVScroll(wi - VScrollWidth, 0, hi); // Установка положения и длины скроллера
        vscroll.SetOffset(16); // Отступ (чтоб не закрыть ползунком стрелочки)
 
        TextWindow(0, 0, wi - VScrollWidth, hi); // Установка текстового окна (на весь экран за вычетом ширины скроллера)
       
        text_height:=Format('"Э  е забудь оставить ключенные тобой за остаток месяца. Прощай, дорогой мой. Молись за меня - если ты когда-нибудь молишься"', 0);

        DrawTextWindow; DrawVScroll(0, text_height, 0, hi); Repaint;
       
        SetColor(255,255,255);
       
        repeat // Главный цикл программы
               
                key:=KeyToAction(GetKeyPressed);
                if key = GA_DOWN then
                        begin
                                MoveDown(2); // Сдвигаем текст вниз
                                FillRect(0,0,wi,hi); // Очистка фона
                                DrawTextWindow; // Рисуем текст
                                DrawVScroll(0, text_height, GetPosition, hi); // Отрисовка скроллера
                end;
                                if key = GA_LEFT then
                        begin
                                MoveUp(10); // Сдвигаем текст вверх
                                FillRect(0,0,wi,hi); // Очистка фона
                                DrawTextWindow; // Рисуем текст
                                DrawVScroll(0, text_height, GetPosition, hi); // Отрисовка скроллера
                end;
               
                if key = GA_UP then
                        begin
                                MoveUp(2); // Сдвигаем текст вверх
                                FillRect(0,0,wi,hi); // Очистка фона
                                DrawTextWindow; // Рисуем текст
                                DrawVScroll(0, text_height, GetPosition, hi);  // Отрисовка скроллера
                        end;
                                        if key = GA_RIGHT then
                        begin
                                MoveDown(10); // Сдвигаем текст вверх
                                FillRect(0,0,wi,hi); // Очистка фона
                                DrawTextWindow; // Рисуем текст
                                DrawVScroll(0, text_height, GetPosition, hi);  // Отрисовка скроллера
                        end;
                       
                if key = GA_GAMED then menu; // Выход
                                              //а вот тут както надо сделать назад, типа при нажатии на какую нит клавишу
               
                Repaint; Delay(5); // Всё таки для Verdanы 7 медленновато скролирует. Надо ещё улучшать алгоритм.

        until false; // Если выбрали ВЫХОД - то выход
        end;



Begin
        SetFont(FONT_FACE_PROPORTIONAL, FONT_STYLE_BOLD, FONT_SIZE_LARGE);
        wi:=GetWidth; hi:=GetHeight;
                for i:=0 to 255 do
                begin
                        SetColor (255-i, 255-i, 255-i);
                        DrawText('PHP', (wi-GetStringWidth('PHP'))/2, (hi-GetStringHeight('PHP')*3)/2-4);
                        DrawText('книга', (wi-GetStringWidth('книга'))/2, (hi-GetStringHeight('книга')*2)/2-2);
                        DrawText('', (wi-GetStringWidth(''))/2, (hi-GetStringHeight(''))/2);
                        DrawText('ЯМАК', (wi-GetStringWidth('ЯМАК'))/2, (hi-GetStringHeight('ЯМАК')/3)/2+4);
                        Repaint; Delay(10); i:=i+1;
                       
                end;
Delay (2000);
        SetColor(255, 255, 255);
  FillRect(0, 0, wi, hi);
        // ------------------------ Установка шрифтов --------------------------------
        font32.init(2); // Всего 2 шрифта
        Font(0); LoadFont('Verdana_7'); // Основной шрифт
        Font(1); LoadFont('Verdana_7b'); // Такой же шрифт, но утолщенный и белый (для выделенного пункта)
       
        // ------------------------ Установка меню --------------------------------
        menu32.init;
        LoadCursor('/cursor.png'); // Загрузка курсора для меню
        SetMenuWindow(0, 0, wi, hi); // Задаем окно, в котором будет отображаться меню
        MenuFonts(0, 1); // Основной и курсорный шрифты
       
        AddItem('/cube.png', 'читать'); // Добавляем элементы меню
        AddItem('/star.png', 'Настройки');
        AddItem('none', 'Помощь'); // Пример пункта где иконка не нужна
        AddItem('/about.png', 'О программе');
        AddItem('/error.png', 'Выход');
       
        // ------------------------ Основной цикл --------------------------------
        DrawMenu; Repaint;
        repeat
                key:=KeyToAction(GetKeyPressed); Delay(50);
                if key=GA_DOWN then begin CursorDown; DrawMenu; Repaint; Delay(100); end; // Вниз
                if key=GA_UP then begin CursorUp; DrawMenu; Repaint; Delay(100); end; // Вверх
                if key=GA_FIRE then // Нажали огонь
                        begin
                                if Selected = 0 then ch;

                                if SelectedItem = 'Выход' then Halt; //
                        end
        until false;

End.


odd 09.01.2009 01:00

Ответ: как сделать ссылку назад?
 
Выход из безконечного цикла длается так:
PHP код:

if key GA_GAMED then break; // Выход 

Строчку вызова книги тоже смени на
PHP код:

if Selected 0 then begin chDrawMenuRepaintDelay(100); end

PS: Впредь если в Вашем проекте используются шрифты, курсоры, скины окон и проч., то выкладывайте проект ЦЕЛИКОМ в виде zip файла, а то много времени уходит на выяснение почему программа зависает из-за нехватки какого-либо файла в проекте.


Часовой пояс GMT +4, время: 16:58.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot