forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_menu32 - Графическое меню без головной боли (http://forum.boolean.name/showthread.php?t=6230)

odd 09.08.2008 08:01

Lib_menu32 - Графическое меню без головной боли
 
Вложений: 2
Последнее обновление 02.10.2009
Библиотека графических меню.
Пробуйте. Оценивайте. Делайте советы какие ещё функции можно добавить.
На данный момент список функций такой:

PHP код:

init Инициализация менюОчистка списка пунктовМожно вызывать неоднократно (напримердля очистки памяти).
 
SetMenuWindow(xintegeryintegerwintegerhinteger) - Установить окнов котором будет
    отображаться наше меню
xкоординаты левого верхнего углаw и h ширина и высота окна.
    
По умолчанию устанавливается окно размером в весь дисплей телефона.
 
LoadCursor(fnamestring) - Загрузить из ресурсов картинку с именем fnameкоторая будет использоваться
    в качестве курсора меню
.
 
AddItem(fnamestringtxtstring) - Добавление пункта в меню.
    
fname Путь к картинке из ресурсовкоторая будет использоваться в качестве иконки для пункта меню
    
(если иконка не нужна в качестве пути пишем строчку'NONE')
    
txt Текст подписи для пункта меню
 
MenuFonts
(f1integerf2integer) - Установить шрифтыкоторые будут использоваться в меню.
    
f1 это шрифтиспользуемый для всех элементов меню
    f2 
шрифтиспользуемый для отображения выделенного пункта
    По умолчанию используется нулевой шрифт в обоих случаях
.
 
DrawMenu Отрисовка меню в буфере экранаЧтобы меню стало видимымиспользуйте Repaint.
    
Меню при создании сохраняет свой фон и в последующих операциях использует его,
    
по-этому вам не нужно делать восстановление фона меню после каждого изменения положения курсора.
 
HideMenu Спрятать меню (восстановить фон). Операция проходит в буфере экрана.
    
Чтобы увидеть результаты изменения используйте Repaint.
 
CursorUp Передвигает курсор в меню вверх на 1 пункт
 
CursorDown 
Передвигает курсор в меню вниз на 1 пункт
 
integer Selected 
Возвращает номер выделенного пункта меню (счёт идет с 0).
 
string SelectedItem Возвращает значение (текствыделенного пункта меню
 
SetOffset
(iinteger) - Установить отступ текста от левого края окна (и от иконкиесли есть).
    
По умолчанию отступ равен 3 пикселам

Библиотека тесно использует другую библиотеку - Lib_font32, по-этому без нее она работать не будет. Уже есть идея добавить плавную прокрутку текста в пунктах с длинным текстом. Сейчас уже бьюсь над её реализацией.

Kurdt 09.08.2008 15:18

Re: Lib_menu32 - Графическое меню без головной боли
 
неплохо бы еще функцию

Установка определенного пункта меню активным (можно использовать CursorDown но это помоему более процесороемкий процесс)

Romanzes 09.08.2008 22:29

Ответ: Lib_menu32 - Графическое меню без головной боли
 
А как изменять текст пункта меню?

Strelok 09.08.2008 22:35

Ответ: Lib_menu32 - Графическое меню без головной боли
 
odd, Агромное спасибо!:super: А можно сделать функцию для получения позиции курсора на экране? хочу сделать вывод справки к пунктам

Strelok 09.08.2008 22:57

Ответ: Lib_menu32 - Графическое меню без головной боли
 
И ещё было бы здорово - если текст пункта больше заданного окна меню то он прокручивается влево-вправо. И не плохо бы сделать ползунок скролинга, с возможностью отключения. Высота пунктов меню, как я понял, зависит от размера иконки?

odd 10.08.2008 09:29

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Да. Высота пункта пока зависит от иконки, но в свежей версии появится функция настройки высоты пункта. Скролинг уже делается. Также добавлю функции удаления и изменения текста пунктов. Над полосой прокрутки я уже тоже думал. Скорее всего сделаю и её, но уже в отдельной библиотеке. Ждите обновления библиотек.

Kurdt 10.08.2008 12:05

Re: Lib_menu32 - Графическое меню без головной боли
 
и еще одну мелочь можно былобы. вместо курсора битмапа генерировать филрект с опр. цветом, если картинка незадана. просто на разных разрешениях телефонах не подобртать одинаковой картинки... да и памяти меньше будет да и несложно в доработке. 2 строчки)

Еще былобы непохо центрировать надписи в меню.

Strelok 10.08.2008 21:01

Ответ: Re: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Kurdt (Сообщение 84134)
и еще одну мелочь можно былобы. вместо курсора битмапа генерировать филрект с опр. цветом, если картинка незадана. просто на разных разрешениях телефонах не подобртать одинаковой картинки... да и памяти меньше будет да и несложно в доработке. 2 строчки)

Еще былобы непохо центрировать надписи в меню.

А ещё лучше сделать чтоб вместо LoadCursor(fname: string) было LoadCursor(fname: image) и тогда при помощи других библиотек можно было бы обрабатывать курсор, в том числе и растягивать под размер окна

Strelok 10.08.2008 22:07

Ответ: Lib_menu32 - Графическое меню без головной боли
 
У меня какой то лаг странный - главное меню построенно с использованием этой библы, после нескольких переходов по пунктам меню и возврате в главное начинает автоматически включаться первый пункт

Strelok 10.08.2008 23:32

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Сменил реагирование кнопки огня с кейпрессед на кейкликед и глюк пропал

odd 18.08.2008 08:30

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Немного подправлил библиотеку. Почти все ваши пожелания были учтены.
От себя еще добавил функции поддержки сенсорного экрана.
Скроллинга пока нет :-( но я уже работаю в данном направлении.

Strelok 18.08.2008 23:07

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Ругается на pointer_state - пишет что необъявлена нигде

Romanzes 19.08.2008 00:10

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Strelok, поищи в теме про Lib_game аттач с именем Lib_sensor.

Strelok 19.08.2008 18:25

Ответ: Lib_menu32 - Графическое меню без головной боли
 
так он у меня и так есть

ViNT 19.08.2008 18:35

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Strelok (Сообщение 84707)
так он у меня и так есть

А в uses объявлена?

Strelok 19.08.2008 22:37

Ответ: Lib_menu32 - Графическое меню без головной боли
 
ну да

Romanzes 19.08.2008 23:49

Ответ: Lib_menu32 - Графическое меню без головной боли
 
http://forum.boolean.name/showpost.p...1&postcount=16

Strelok 20.08.2008 00:50

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Пардон =)

Kurdt 22.08.2008 13:58

Re: Lib_menu32 - Графическое меню без головной боли
 
есть идея насчет скрола, можешь просто сделать возврат количество пикселей текст, на екране скоьлко влазит а уже програмно его двигать в цикле с проверой ввод конопок, так думаю амое лутше будет

odd 22.08.2008 19:45

Ответ: Re: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Kurdt (Сообщение 84904)
есть идея насчет скрола, можешь просто сделать возврат количество пикселей текст, на екране скоьлко влазит а уже програмно его двигать в цикле с проверой ввод конопок, так думаю амое лутше будет

Не совсем тебя понял. Но я могу просто добавить в Lib_font32 и Lib_menu32 соответствующие функции чтобы они сами всё подставляли и отрисовывали скролл автоматически.

Kurdt 22.08.2008 20:10

Re: Lib_menu32 - Графическое меню без головной боли
 
Lib_menu32 - скрол горизонтальный я имею в виду. тут немного сложно будет в библиотеке его написать. лутше в прораму вынести

Kurdt 27.08.2008 16:55

Re: Lib_menu32 - Графическое меню без головной боли
 
Как успехи?

odd 28.08.2008 08:06

Ответ: Re: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Kurdt (Сообщение 85210)
Как успехи?

Да пока дело стоит. Щас работаю в паре с неким gray_wolf пишу серьезное приложение для мобил. Опробую так сказать библиотеки в деле. Уже откопал и устранил пару неудобств. Собственно код приложения уже написан. Идет добавление справочной инфы. Как будет готово - покажу. Потом продолжим работу над проектом NONAME :-D

Kurdt 10.09.2008 13:53

Re: Lib_menu32 - Графическое меню без головной боли
 
Есть идея насчет скролинга.. помоему он вообще ненужен, лучше сделать так, если текст не влазит в строку переносить его на следующую строку, пункт будет занимать уже 2 строки.

odd 15.09.2008 06:32

Ответ: Re: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Kurdt (Сообщение 86075)
Есть идея насчет скролинга.. помоему он вообще ненужен, лучше сделать так, если текст не влазит в строку переносить его на следующую строку, пункт будет занимать уже 2 строки.

Ну да. Так сделано, к примеру, в Jimm. Но мне не нравится. Это надо будет высоту каждого пункта ещё хранить. Лучше уж скроллинг.

Ваня1993 16.09.2008 22:42

Re: Lib_menu32 - Графическое меню без головной боли
 
odd, когда компилю твой пример(MenuDemo.zip) и запускаю на телефоне, то запускается просто белый экран. LibFont32 - стоит. Что это может быть?

odd 17.09.2008 06:25

Ответ: Re: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Ваня1993 (Сообщение 86387)
odd, когда компилю твой пример(MenuDemo.zip) и запускаю на телефоне, то запускается просто белый экран. LibFont32 - стоит. Что это может быть?

Удаленно это довольно трудно узнать. А что за марка и модель телефона? А в эмуляторе у тебя нормально работает?

Ваня1993 20.09.2008 14:09

Re: Lib_menu32 - Графическое меню без головной боли
 
Уже нормально работает, просто рус. версия, когда компилила не добавляла библиотеки в мидлет.

Odd, в твоей библиотеке можно сделать перемещение по горизонтали? Т.е я у себя в мидлете хочу сделать меню как в телефоне.

odd 21.09.2008 07:54

Ответ: Re: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Ваня1993 (Сообщение 86511)
Уже нормально работает, просто рус. версия, когда компилила не добавляла библиотеки в мидлет.

Odd, в твоей библиотеке можно сделать перемещение по горизонтали? Т.е я у себя в мидлете хочу сделать меню как в телефоне.

Такая библиотека пишется. Типа горизонтальное меню, как под заголовком окна в винде. Давненько я вас новыми либами не радовал, надо будет быстрее доделывать...

Doctor Drive 10.03.2009 17:09

Ответ: Lib_menu32 - Графическое меню без головной боли
 
В старой версии не очищается первый пункт.
В новой курсора не показывает о_О

PHP код:

Program MenuDemo;
Uses    menu32font32parsejsr75i;
var 
rootgdgfpathstring;
iselkeyinteger;
a,bimage;
Begin
    
//----------------------CHOOSE DRIVE----------------------------
    
menu32.createcursor(200,20,255255000);
    
:= loadimage('/star.png');
    
path := '/';
    
parse.line(jsr75i.get_roots'|');
    
    
font32.init(2);
    
font32.Font(0); LoadFont('Verdana_7'); 
    
font32.Font(1); LoadFont('Verdana_7b'); 
    
    
    
menu32.init
    
menu32.SetMenuWindow(1010110150); 
    
menu32.MenuFonts(01);
    
for 
:= 0 to parse.len-do additem(b,parse.get(i));

    
    
DrawMenuRepaint;
repeat
        key
:=KeyToAction(GetKeyClicked);
        if 
key=GA_DOWN then begin CursorDownDrawMenuRepaintDelay(100); end;
        if 
key=GA_UP then begin CursorUpDrawMenuRepaintDelay(100); end;
until key=GA_FIRE;
//----------------------------END OF DRIVES--------------------------------    
    
repeat

sel 
:= menu32.selected
path := path parse.get(sel);
    if 
copy(parse.get(sel), length(parse.get(sel))-1,length(parse.get(sel))) <> '/' then break;
    
    
gd := jsr75i.get_dirs(path);
    
gf := jsr75i.get_files(path);

if 
gd '' then root := gf;
if 
gd <> '' then root := gd+'|'+gf;

parse.clear;
parse.line(root'|');
    
    
    
menu32.init;
    
    for 
:= 0 to parse.len-do additem(b,parse.get(i));
        
setcolor(255,255,255); fillrect(0,0,getwidth,getheight);
drawmenurepaint;
    
    
repeat
        key
:=KeyToAction(GetKeyClicked);
        if 
key=GA_DOWN then begin CursorDownDrawMenuRepaintDelay(100); end;
        if 
key=GA_UP then begin CursorUpDrawMenuRepaintDelay(100); end;
until key=GA_FIRE;
    
    
until false;
    
End


odd 10.03.2009 21:18

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Конечно не показывает. Ты же сначала сохраняешь курсор, а потом делаешь menu32.init, который все переменные стирает и ставит дефолтные(по умолчанию) значения. Просто переставь оператор menu32.createcursor(200, 20, 255255000); так, чтоб он был после menu32.init.

Doctor Drive 16.03.2009 21:54

Ответ: Lib_menu32 - Графическое меню без головной боли
 
а как цвет курсора ставится? думал RRRGGGBBB где R,G,B - (0..255)
Но оказывается не так...

GRAY_WOLF 16.03.2009 22:14

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Doctor Drive (Сообщение 100839)
а как цвет курсора ставится? думал RRRGGGBBB где R,G,B - (0..255)
Но оказывается не так...


image CreateCursor(w: integer; h: integer; c: integer) - Создать прямоугольник с размерами w на h и ARGB цветом с.
вот пример LoadCursor(CreateCursor(120, 16, 4281428406));

Doctor Drive 16.03.2009 23:20

Ответ: Lib_menu32 - Графическое меню без головной боли
 
ага, но что за ARGB? в гугле ниче не нашел...


а терь проблема - после нажатия на "огонь" меню не появляеццо...


PHP код:

unit Edit;

interface
    
procedure open;

implementation
    
    uses FileSystem
imloadjsr75font32menu32effectscanvasjpeg;
        
    
procedure open;
    
        var 
openstring;
        
imimage;
        
coefwreal;
        
twthselkeyinteger;
        
resizeboolean;
        
    
begin
    font32
.init(2);
    
font32.Font(0); font32.LoadFont('Verdana_7'); 
    
font32.Font(1); font32.LoadFont('Verdana_7b');
    
    
th := font32.TextHeight;
    
tw := font32.TextWidth('5 - menu')/2;
        
        
open := FileSystem.foldselect;
        
im := imloadjsr75.loadimage(open);
        if 
getImageWidth(im) <= getwidth then resize := false else resize := true;
        
coefw := getImageWidth(im)/GetImageHeight(im);
        
showcanvas;
        
            
repeat
            
if resize false then drawimage(im,0,0);
            if 
resize true then drawimage(canvas.resize_image(imgetwidthtrunc(getwidth/coefw)),0,0);
            
setcolor(0,0,0);
            
fillrect(0getheight-thgetwidthth);
            
font32.Font(1);
            
DrawString('5 - Menu'getheight-thgetwidth/2-tw); //и вот тут рисует текст не тем шрифтом что надо
            
repaint;
            
repeat key := GetKeyClicked until KeyToAction(key) = GA_FIRE;
            
                    if 
resize false then drawimage(im,0,0);
                    if 
resize true then drawimage(canvas.resize_image(imgetwidthtrunc(getwidth/coefw)),0,0);
                    
menu32.init;
                    
menu32.CreateCursor(130244278190250);
                    
menu32.SetMenuWindow(00getwidthgetheight);
                    
menu32.MenuFonts(01);
                    
menu32.additem(loadimage('/menu/saveas.png'), 'Save as...');
                    
menu32.additem(loadimage('/menu/effects.png'), 'Effects');
                    
menu32.additem(loadimage('/menu/back.png'), 'Close');
                    
drawmenurepaint;

                    
repeat
                    key
:=KeyToAction(GetKeyClicked);
                    if 
key=GA_DOWN then begin CursorDownDrawMenuRepaintDelay(100); end;
                    if 
key=GA_UP then begin CursorUpDrawMenuRepaintDelay(100); end;
                    
until (key=GA_FIRE); delay(100); 


Piligrim 16.03.2009 23:39

Ответ: Lib_menu32 - Графическое меню без головной боли
 
createCursor уже возвращает image, нет необходимости в loadimage.
ARGB - A - это прозрачность курсора.

Doctor Drive 17.03.2009 00:19

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от pilgrim (Сообщение 100854)
createCursor уже возвращает image, нет необходимости в loadimage.

А я и не делал loadimage для курсора.
-------------------------------------
А что на щет того что меню не показывается?!

GRAY_WOLF 17.03.2009 00:43

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Doctor Drive (Сообщение 100864)
А я и не делал loadimage для курсора.
-------------------------------------
А что на щет того что меню не показывается?!

procedure MainMenu; // Главное меню
begin
menu32.init; Cls;
AddItem(LoadImage('/book.png'), 'text'); AddItem(LoadImage('/REV.png'), 'text1');
AddItem(LoadImage('/Boot.png'), ''text2); AddItem(LoadImage('/exit.png'), 'Выход');
SetMenuWindow(10, 10, wi - 10, hi / 2);
LoadCursor(CreateCursor(150, 33, 4281428406)); MenuFonts(0, 1);
DrawMenu; Repaint;
repeat
key:=KeyToAction(GetKeyPressed); Delay(30);
if key = GA_UP then begin CursorUp; DrawMenu; Repaint; Delay(250); end;
if key = GA_DOWN then begin CursorDown; DrawMenu; Repaint; Delay(250); end;
if key = GA_FIRE then
begin
if Selected = 0 then //действия
if Selected = 1 then //действия 1
if Selected = 2 then //действия2
if Selected = 3 then Halt; // Выход
end;
until false;
end;

вот так уменя работает

Doctor Drive 17.03.2009 01:04

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Я знаю как меню делается. И делал. А вотут в проге оно не появляется

GRAY_WOLF 17.03.2009 18:39

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Doctor Drive (Сообщение 100868)
Я знаю как меню делается. И делал. А вотут в проге оно не появляется

Выложи исходник. Возможно кто нибудь и поможет.

Doctor Drive 17.03.2009 20:36

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Нету смысла выкладывать целый исходник. Вот разве что целый юнит выложу (напишу сюда). Место проблемы возле коментариев (тоесть часть кода, где должно появится меню и то, где текст не там рисует) Вот:
PHP код:

unit Edit;

interface
    
procedure open;

implementation
    
    uses FileSystem
imloadjsr75font32menu32effectscanvasjpeg;
        
    
procedure open;
    
        var 
openstring;
        
imimage;
        
coefwreal;
        
twthselkeyinteger;
        
resizeboolean;
        
    
begin
    font32
.init(2);
    
font32.Font(0); font32.LoadFont('Verdana_7'); 
    
font32.Font(1); font32.LoadFont('Verdana_7b');
    
    
//ВОТ КООРДИНАТЫ ТЕКСТА
    
th := font32.TextHeight;
    
tw := font32.TextWidth('5 - menu')/2;
        
        
open := FileSystem.foldselect;
        
im := imloadjsr75.loadimage(open);
        if 
getImageWidth(im) <= getwidth then resize := false else resize := true;
        
coefw := getImageWidth(im)/GetImageHeight(im);
        
showcanvas;
        
            
repeat
            
if resize false then drawimage(im,0,0);
            if 
resize true then drawimage(canvas.resize_image(imgetwidthtrunc(getwidth/coefw)),0,0);
            
setcolor(0,0,0);
            
fillrect(0getheight-thgetwidthth);
            
font32.Font(1);
            
//ВОТ ТУТ ТЕКСТ НЕ ТАМ РИСУЕТ:
            
DrawString('5 - Menu'getheight-thgetwidth/2-tw);
            
repaint;
            
repeat key := GetKeyClicked until KeyToAction(key) = GA_FIRE;
            
            
//А ВОТ ЭТО МЕНЮ НЕ ПОКАЗЫВАЕТСЯ:
                    
if resize false then drawimage(im,0,0);
                    if 
resize true then drawimage(canvas.resize_image(imgetwidthtrunc(getwidth/coefw)),0,0);
                    
menu32.init;
                    
menu32.CreateCursor(130244278190250);
                    
menu32.SetMenuWindow(00getwidthgetheight);
                    
menu32.MenuFonts(01);
                    
menu32.additem(loadimage('/menu/saveas.png'), 'Save as...');
                    
menu32.additem(loadimage('/menu/effects.png'), 'Effects');
                    
menu32.additem(loadimage('/menu/back.png'), 'Close');
                    
drawmenurepaint;
            
                    
repeat
                    key
:=KeyToAction(GetKeyClicked);
                    if 
key=GA_DOWN then begin CursorDownDrawMenuRepaintDelay(100); end;
                    if 
key=GA_UP then begin CursorUpDrawMenuRepaintDelay(100); end;
                    
until (key=GA_FIRE); delay(100);
                    
                    
sel := menu32.selected;
                    
                        if 
sel 0 then begin
                            jpeg
.saveImage(im100copy(open,0,length(open)-4) + '_edit.jpg');
                            
clearform;
                            
showAlert('Done!''Image saved!'loadimage('/sav.gif'), ALERT_INFO);
                            
delay(3000);
                        
end;
                        if 
sel 1 then begin
                                
if resize false then drawimage(im,0,0);
                                if 
resize true then drawimage(canvas.resize_image(imgetwidthtrunc(getwidth/coefw)),0,0);
                                
menu32.init;
                                
menu32.CreateCursor(130244278190250);
                                
menu32.SetMenuWindow(00getwidthgetheight);
                                
menu32.MenuFonts(01);
                                
menu32.additem(LoadImage('/menu/0.png'), 'Обесцвечивание');
                                
menu32.additem(LoadImage('/menu/1.png'), 'Негатив');
                                
menu32.additem(LoadImage('/menu/2.png'), 'Затемнение');
                                
menu32.additem(LoadImage('/menu/3.png'), 'Осветление');
                                
menu32.additem(LoadImage('/menu/4.png'), 'Сепия');
                                
menu32.additem(LoadImage('/menu/5.png'), 'Сглаживание');
                                
menu32.additem(LoadImage('/menu/6.png'), 'Искажение');
                                
menu32.additem(LoadImage('/menu/7.png'), 'Черно-белый');
                                
menu32.additem(LoadImage('/menu/back.png'), 'Назад в редактор');
                                
menu32.drawmenurepaint;

                                
repeat
                                key
:=KeyToAction(GetKeyClicked);
                                if 
key=GA_DOWN then begin CursorDownDrawMenuRepaintDelay(100); end;
                                if 
key=GA_UP then begin CursorUpDrawMenuRepaintDelay(100); end;
                                
until (key=GA_FIRE); delay(100);

                                    
sel := menu32.selected;
                                    if 
sel <> 8 then im := effects.effect(im,sel);
                        
end;
                        if 
sel 2 then break;
                        
                        

            
until false;
    
end;

initialization
end



Piligrim 19.03.2009 00:21

Ответ: Lib_menu32 - Графическое меню без головной боли
 
попробуй заменить GetKeyClicked на GetKeyPressed

Doctor Drive 20.03.2009 16:41

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Нифига. Меню просто не появляется :(
Картинку показывает и все...

odd 24.03.2009 08:27

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Я пробовал. При отключении картинок в меню всё нормально показывает.
Может не так прописана одна из иконок меню? Проверь.
Нижний текст не так рисует? Исправь на
PHP код:

DrawString('5 - Menu'getwidth/2twgetheight-th); 

У тебя просто не в том порядке параметры стоят

И вообще как-то странно, что у тебя программа вообще работает.
У меня на строку
PHP код:

menu32.CreateCursor(130244278190250); 

ругается. Нужно делать так:
PHP код:

menu32.loadcursor(menu32.CreateCursor(130244278190250)); 

Может у тебя старая версия библиотеки? Скачай более свежую.

Doctor Drive 25.03.2009 21:28

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Кароче забейте. Я в form это меню сделал :)

odd, хз. Вроде новая, ладно, спс...
А с тем что текст не так рисует, это я чтото конкретно глюкнул)))))))))))))

cHeRsAnYa 28.03.2009 16:10

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Имеется такой баг: http://pic.ipicture.ru/uploads/090328/5C042QVVGr.jpg Конечно можно решить очисткой экрана перед каждой отрисовкой меню, но так не должно быть.
И вот: http://pic.ipicture.ru/uploads/090328/RgWT9HrUfi.jpg (обведено красным) - буквы "i" почти не видно. От шрифта не зависит.

Есть ещё вопрос - как сделать фон для меню? Функции такой не нашёлю

odd 02.04.2009 08:58

Ответ: Lib_menu32 - Графическое меню без головной боли
 
1) Фон для меню я делал функцией для создания курсора. :@
2) Чтобы буква i была нормально видна нужно немного подправить таблицу шрифта. Это глюки генератора шрифтов, не библиотеки.
3) По поводу размазанного меню ничего сказать не могу, нужно исходник глянуть.

cHeRsAnYa 02.04.2009 17:41

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от odd (Сообщение 102536)
Чтобы буква i была нормально видна нужно немного подправить таблицу шрифта. Это глюки генератора шрифтов, не библиотеки.

Как это сделать?
С остальными вопросами уже сам разобрался, спасибо за такую полезную библиотеку :)

GRAY_WOLF 02.04.2009 19:42

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Выложи шрифт и таблицу к нему.Могу помочь с таким уже приходилось сталкиваться.

odd 02.04.2009 19:59

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от cHeRsAnYa (Сообщение 102563)
Как это сделать?
С остальными вопросами уже сам разобрался, спасибо за такую полезную библиотеку :)

Делается это так:
1) Открываешь свой шрифт в MS Paint и находишь там букву "i"
2) Смотришь её x-координату (к примеру у меня это 468 для шрифта Verdana 7)
3) Открываешь DAT файл от этого шрифта в текстовом редакторе и ищешь такую координату
4) Я нашёл на строчке №74 запись 468, а под номером №75 записано 471. Это обозначает, что буква i начинается с 468, а буква j c 471 пиксела. Просто подкорректируй эти координаты на те, которые получишь в MS Paint. В твоём случае скорее всего будет достаточно увеличить на пару пикселов число в 74-ой строке.

PS: А вообще Fontgen косячит довольно часто. Потом либо в графическом редакторе приходится немного передвигать буквы либо править DAT файл.

cHeRsAnYa 02.04.2009 21:12

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Спасибо за помощь :) И ещё вопрос - как одновременно отобразить 2 меню? Одно - список файлов, другое - контекстное меню по софткею (нет, это не файловый менеджер =) )

odd 02.04.2009 23:01

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от cHeRsAnYa (Сообщение 102599)
Спасибо за помощь :) И ещё вопрос - как одновременно отобразить 2 меню? Одно - список файлов, другое - контекстное меню по софткею (нет, это не файловый менеджер =) )

А почему нельзя? При нажатии на софткей загружаем и отображаем контекстное меню, после закрытия меню снова загружаем меню со списком файлов. Чтобы список файлов не отображался с начала желательно запоминать положение курсора перед вызовом контекстного меню и потом восстанавливать его.

cHeRsAnYa 02.04.2009 23:39

Ответ: Lib_menu32 - Графическое меню без головной боли
 
А как при клике на пункте контекстного меню получить выбранный элемент в главном меню?

odd 11.04.2009 02:28

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от cHeRsAnYa (Сообщение 102628)
А как при клике на пункте контекстного меню получить выбранный элемент в главном меню?

Перед вызовом контекстного меню сохраняй выбранный пункт главного меню в переменную. Как-то так.

AhelNezzar 11.05.2009 01:25

Ответ: Lib_menu32 - Графическое меню без головной боли
 
у меня последние 2 файла не получилось запустить.... при компилящии MP обрубается...:mad:

cyberdyne 05.09.2009 19:54

Ответ: Lib_menu32 - Графическое меню без головной боли
 
CreateCursor не может быть вызвана как процедура, отсутствует оператор присвоения, что за ошибка, в твоем примере?

GRAY_WOLF 05.09.2009 23:50

Ответ: Lib_menu32 - Графическое меню без головной боли
 
А либу uses menu32; подключил к проекту? Глюк бывает только из-за не подключенной библиотеки.

odd 06.09.2009 03:08

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Кстати, библиотека обновилась. Добавил я туда таки скроллинг строки.
Выложить? Или никому не интересно?

cyberdyne 06.09.2009 18:51

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Конечно интересно, и еще не могу понять в последней библе там курсор только цветом- картинкой нельзя, если можно то как? Имеется ли возможность фона для меню?И еще не мог бы ты линк кинуть на эмулятор которым сенсорный экран проверить можно?

KeipL 13.09.2009 13:11

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Да, выложи конечно.

DIMMON4IK 13.09.2009 14:07

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от cyberdyne (Сообщение 117748)
И еще не мог бы ты линк кинуть на эмулятор которым сенсорный экран проверить можно?

KEmulator - вместо стилуса мышь
http://mobilepascal.ucoz.ru/load/1-1-0-63

vad74 17.09.2009 14:25

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Как можно менять цвет фона в меню?

odd 25.09.2009 23:22

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Нарисуй фон какой тебе нужно, а потом уже вызывай функцию задания размеров окна для меню.

vad74 30.09.2009 17:57

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Если можно по подробней, что за чем делать. Краткий пример вызовов функций прояснил бы. Непонятно где я должен нарисовать фон.

GRAY_WOLF 30.09.2009 21:27

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Вот примерно так
PHP код:

Uses menu32font32;
Var    
wihikeyinteger;
        
fon,mimage;
begin
wi
:=GetWidthhi:=GetHeight;
    
fon:=LoadImage('/fon.png'); // Загружаем фон
    
m:=CreateCursor(wi-101921259339775);// Создаем дополнительный фон
// ------------------------ Установка шрифтов --------------------------------
    
font32.init(2); // Всего 2 шрифта
    
Font(0); LoadFont('Verdana_10'); // Основной шрифт
    
Font(1); LoadFont('Verdana_10b'); // Такой же шрифт, но утолщенный и белый (для выделенного пункта)
// ------------------------ Установка меню --------------------------------
  
menu32.init// инициализация меню
    
DrawImage(fonwi/120hi/160);DrawImage(m,5,5);//рисуем фон
  
LoadCursor(CreateCursor(GetWidth-10164278190250)); // Создаем курсор
    
SetMenuWindow(55wi-5197); // Задаем окно, в котором будет отображаться меню
    
MenuFonts(01); // Основной и курсорный шрифты
    // добавляем пункты меню
    
AddItem(LoadImage('/i2.png'), '1 пункт'); 
  
AddItem(LoadImage('/i5.png'), '2 пункт');
    
AddItem(LoadImage('/i1.png'), '3 пункт');
  
AddItem(LoadImage('/exit.png'), 'Выход');
    
     
DrawMenuRepaint;
     
repeat        
         key
:=KeyToAction(GetKeyPressed); Delay(30);        
          if 
key GA_UP then begin CursorUpDrawMenuRepaintDelay(250); end;//курсор в верх
         
if key GA_DOWN then begin CursorDownDrawMenuRepaintDelay(250); end;//курсор в низ
         
if key GA_FIRE then
     until false
;    
    
end



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

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