|
Основной форум Сюда все проблемы связанные с программированием. |
11.07.2008, 18:24
|
#1
|
Нуждающийся
Регистрация: 07.07.2008
Адрес: Zp-UA
Сообщений: 58
Написано 4 полезных сообщений (для 11 пользователей)
|
Меню...
Доброго время суток, друзья.
Я являюсь хорошим кодером паскаля, но в МП новичек.
Я Использовал пример граф меню из исходников выложенных гдето на этом форуме. Естествено изменил(вроде бы улучшил))) ) и начал затачивать под свой проэкт.
НО в результате проверки рабочими оказались только 4 пункта меню !!
Я облазил этот несчасный кусочек кода, но в упор не вижу ограничения...
ткните носом плиз.
код:
Program Menu3;
Var mc, wi, hh, hi, key, i,azs: integer;
arrow: image;
m: array [0..10] of string;
img: array [0..10] of image;
Procedure MenuColor(n: integer);
begin
if n=mc then begin SetFont(FONT_FACE_SYSTEM, FONT_STYLE_BOLD, FONT_SIZE_MEDIUM); SetColor(255,255,255); end
else begin SetFont(FONT_FACE_SYSTEM, FONT_STYLE_PLAIN, FONT_SIZE_MEDIUM); SetColor(255,255,255); end;
end;
Procedure ShowMenu;
var pt: integer;
begin
azs:=20;
wi:=GetWidth; hi:=GetHeight;
m[0]:='Старт'; m[1]:='Поиск'; m[2]:='Помощь'; m[3]:='О программе'; m[4]:='Рекорды'; m[5]:='Выход';
img[0]:=LoadImage('/search.png'); img[1]:=LoadImage('/search.png'); img[2]:=LoadImage('/help.png'); img[3]:=LoadImage('/about.png'); img[4]:=LoadImage('/search.png'); img[5]:=LoadImage('/quit.png');
mc:=0;
arrow:=LoadImage('/arrow.png');
repeat
pt:=hi/2-60;
SetFont(FONT_FACE_SYSTEM, FONT_STYLE_PLAIN, FONT_SIZE_MEDIUM);
SetColor(50,51,61); FillRect(0,0,wi,hi);
SetColor(64,64,64); FillRect(0,mc*azs+pt,wi,azs);
SetColor(30,64,129); hh:=GetStringHeight('W')/2;
for i:=0 to 5 do begin MenuColor(i); DrawText(m[i],32,15+azs*i-hh+pt); DrawImage(img[i],3,3+azs*i+pt);end;
DrawImage(arrow, wi-20, mc*azs+pt+15);
Repaint; Delay(20);
key:=GetKeyClicked;
if (key=50) or (key=-59) or (key=-1) then mc:=(mc+3) mod 4;
if (key=56) or (key=-60) or (key=-2) or (key=-6) then mc:=(mc+1) mod 4;
if (key=53) or (key=-26) or (key=-5) or (key=20) then
begin
//if mc=0 then Search;
//if mc=1 then Help;
//if mc=2 then About;
if mc=3 then break;
end;
until false;
end;
Begin
ShowMenu;
End.
|
(Offline)
|
|
11.07.2008, 19:14
|
#2
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Меню...
Похоже, ограничение зарылось здесь:
key:=GetKeyClicked;
if (key=50) or (key=-59) or (key=-1) then mc:=(mc+3) mod 4;//<<-------------
if (key=56) or (key=-60) or (key=-2) or (key=-6) then mc:=(mc+1) mod 4;//<<-------------
if (key=53) or (key=-26) or (key=-5) or (key=20) then
Вместо четверки должно стоять количество пунктов меню.
|
(Offline)
|
|
12.07.2008, 03:40
|
#3
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Меню...
...А вместо тройки в операторе mc:=(mc+3) mod 4; должно стоять количество пунктов на 1 меньше. ;-)
|
(Offline)
|
|
12.07.2008, 09:13
|
#4
|
Нуждающийся
Регистрация: 07.07.2008
Адрес: Zp-UA
Сообщений: 58
Написано 4 полезных сообщений (для 11 пользователей)
|
Ответ: Меню...
чесно говоря я принимал эту 4ку за составную часть навигиции((( оплошал
спс
|
(Offline)
|
|
12.07.2008, 13:20
|
#5
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Меню...
Сообщение от odd
...А вместо тройки в операторе mc:=(mc+3) mod 4; должно стоять количество пунктов на 1 меньше. ;-)
|
А у меня и без этого работает как надо.
|
(Offline)
|
|
13.07.2008, 03:25
|
#6
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Меню...
Ладно. Забейте. Скоро приступаю за создание библиотеки по отображению меню. Ещё, может, неделька и всё будет готово.
|
(Offline)
|
|
13.07.2008, 13:38
|
#7
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Меню...
А я как раз начал делать библиотеку для создания кнопок, чекбоксов и прочих подобных контролов.
|
(Offline)
|
|
14.07.2008, 08:04
|
#8
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Меню...
Сообщение от ViNT
А я как раз начал делать библиотеку для создания кнопок, чекбоксов и прочих подобных контролов.
|
Это хорошо, если что, я включусь и помогу и возможно в скором времени появится библиотека типа Lib_form32 или Lib_gui32 с поддержкой графических шрифтов, прозрачности и проч., я же пока работаю над библиотекой меню (меню-список, меню-список с иконками...).
|
(Offline)
|
|
14.07.2008, 10:35
|
#9
|
Нуждающийся
Регистрация: 07.07.2008
Адрес: Zp-UA
Сообщений: 58
Написано 4 полезных сообщений (для 11 пользователей)
|
Ответ: Меню...
удачно я темку создал )))
|
(Offline)
|
|
14.07.2008, 15:09
|
#10
|
Разработчик
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений (для 637 пользователей)
|
Ответ: Меню...
Так, глядишь, и Виста получится. Нужно еще Lib_directx10 сделать
|
(Offline)
|
|
15.07.2008, 14:27
|
#11
|
Нуждающийся
Регистрация: 07.07.2008
Адрес: Zp-UA
Сообщений: 58
Написано 4 полезных сообщений (для 11 пользователей)
|
Ответ: Меню...
угумс, я уже даже перемещениние "курсора" по горизонтал и сделал...
|
(Offline)
|
|
26.07.2008, 22:02
|
#12
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Меню...
А я прикольные окна почти сделал =)
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:17.
|