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 02.10.2009 16:18

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

odd 02.10.2009 22:53

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

Смотрим обновления в первом сообщении темы

KeipL 03.10.2009 11:27

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

NightDeath 22.11.2009 22:52

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

Trazzy 23.11.2009 04:46

Ответ: Lib_menu32 - Графическое меню без головной боли
 
NightDeath,
Используй к примеру Lib_thread (s)

NightDeath 23.11.2009 09:22

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

Сообщение от ArtikZ (Сообщение 126181)
NightDeath,
Используй к примеру Lib_thread (s)

спасибо,как же я сам до этого не допер

PVD 24.02.2010 00:27

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

<-TzX-> 24.02.2010 15:15

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

PVD 24.02.2010 15:50

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

odd 09.03.2010 20:32

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Вложений: 1
Более свежая версия, проверена поддержка нового формата шрифтов.
Всё должно работать 100%.

GRAY_WOLF 09.03.2010 21:07

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

Сообщение от odd (Сообщение 141341)
Более свежая версия, проверена поддержка нового формата шрифтов.
Всё должно работать 100%.

А библиотеку самим компилировать из java в class?

odd 09.03.2010 21:18

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

Сообщение от GRAY_WOLF (Сообщение 141349)
А библиотеку самим компилировать из java в class?

Пардон. В спешке немного ошибся. Исправил. Качай.

cherepets 10.03.2010 10:11

Ответ: Lib_menu32 - Графическое меню без головной боли
 
нокиа е51. при втором вызове init виснет.
се (старый, 176х208 ) тормозит прокрутка, сильно.

cherepets 10.03.2010 11:08

Ответ: Lib_menu32 - Графическое меню без головной боли
 
на нокиа проблема была в другом (виснет при чтении файла с помощью lib_resloader).
а вот у СЕ точно проблема в меню32 (нарисовал менюшку средствами МП - тормоза пропали)

odd 10.03.2010 18:05

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

cherepets 10.03.2010 19:00

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

odd 12.03.2010 18:09

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Вложений: 1
Свежий пример меню. Со скроллингом длинных пунктов.
С цикличным перемещением курсора по меню.
Кому нужно ещё и запоминать положение курсора - воспользуйтесь командами Selected (положение курсора было) и SetCursor (установить курсор на требуемую позицию).

Dimon 12.03.2010 18:14

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

Сообщение от odd (Сообщение 141699)
Свежий пример меню. Со скроллингом длинных пунктов.
С цикличным перемещением курсора по меню.
Кому нужно ещё и запоминать положение курсора - воспользуйтесь командами Selected (положение курсора было) и SetCursor (установить курсор на требуемую позицию).

давно бы так! Большое спасибо!

Dimon 14.03.2010 18:00

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

if key=GA_DOWN then
begin
if Selected = pun then SetCursor(0);
else CursorDown;
DrawMenu; Repaint; Delay(200);
end;

когда например на экран помещается 5 пунтков, а всего их 7, то при листании вниз в нихнем пункте, курсор переместиться не на 0, верхний во всем меню, а на 2, тот верхний, который поместился на экране!!! Исправь пожалуйста, odd!

odd 15.03.2010 05:23

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Вложений: 1
Попробуй, это должно помочь.

Dimon 15.03.2010 14:41

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

Сообщение от odd (Сообщение 141916)
Попробуй, это должно помочь.

да дейставительно помогло, спасибо за помощь :)

NightDeath 16.07.2010 15:09

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

SetVScroll(wi - VScrollwidth, 20, hi-40);
vscroll.SetOffset(3);
DrawVScroll(0,punkt*textheight,selected*textheight , hi-30);

punkt-кол-во пунктов.Пробовал и без умножения на textheight.Если я правильно понимаю то дело в последнем параметре hi-30,помогите плиз.

Все,помощь не нужна,сам разобрался

psih1 04.08.2010 21:38

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

LoadCursor(CreateCursor(GetWidth12,4278190250)); // Создаем курсор 


GRAY_WOLF 04.08.2010 22:58

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Это цвет курсора с прозрачностью „ARGB” в десятичной системе.

Ksanatos 01.09.2010 14:09

Ответ: Lib_menu32 - Графическое меню без головной боли
 
И что из этого что?
250
190
278 (это вообще ни в какие ворота не лезет, пробовал 178 в палитре цветов, вроде похоже на цвет курсора в мидлете)
4 - альфа канал
так чтоли?
т.е. как это число вичислить?

cHeRsAnYa 01.09.2010 16:47

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Нет конечно ))) В шестнадцатиричную систему (HEX) переведи :)

Ksanatos 01.09.2010 21:25

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

kizup 12.05.2011 16:51

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

kizup 18.05.2011 09:27

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

Gonzo 15.09.2012 14:19

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

program MenuDemo;
uses font32, sensor, menu32;
type
  TMenuItem = record
    ImgPath, Hint, Name: string;
  end;
var
  key, i: integer;
  CurrentMenu: array[0..9] of TMenuItem;
  CurrentMenuItem: string;

function Menu(ItemsCount: Integer): string;
var
  k: Integer;
begin
  menu32.init; // инициализация меню
  LoadCursor(CreateCursor(GetWidth, 24, 4278190250)); // Создаем курсор
  SetMenuWindow(0, 0, GetWidth, GetHeight); // Задаем окно, в котором будет отображаться меню
  MenuFonts(0, 1); // Основной и курсорный шрифты
  for k := 0 to ItemsCount do //Добавляем элементы меню
    AddItem2(LoadImage(CurrentMenu[k].ImgPath), CurrentMenu[k].Hint, CurrentMenu[k].Name);
  SetCursor(0); // Выбираем первый пункт
  sensor.init;
  DrawMenu;
  Repaint;
  repeat
    key := KeyToAction(GetKeyPressed);
    //key:=KeyToAction(GetKeyClicked);
    if key = GA_DOWN then
    begin
      if Selected < ItemsCount then
        CursorDown
      else
        SetCursor(0);
      DrawMenu;
      Repaint;
      Delay(100);
    end; // Вниз
    if key = GA_UP then
    begin
      if Selected > 0 then
        CursorUp
      else
        SetCursor(ItemsCount);
      DrawMenu;
      Repaint;
      Delay(100);
    end; // Вверх
    if (pointer_state = 1) then // Если нажали на сенсорный экран
    begin
      SensorClick(pointer_pressed_x, pointer_pressed_y); // Передаем координаты в меню
      DrawMenu;
      Repaint;
    end;
    Delay(5);
    Scroll;
    Delay(5);
    Scroll;
  until (key = GA_FIRE) or (SensorState = 1);
  Menu := SelectedValue;
  for k := ItemsCount downto 0 do
    RemoveItem(k);
  HideMenu;
  Repaint;
end;

begin
  font32.init(2);
  Font(0);
  LoadFont('Verdana_7'); // Основной шрифт
  Font(1);
  LoadFont('Verdana_7b'); // Такой же шрифт, но утолщенный и белый (для выделенного пункта)
  i := 0; //для тестирования
  repeat
    i := i + 1; //для тестирования
    //Основное меню
    CurrentMenu[0].ImgPath := '/info.png';
    //CurrentMenu[0].Hint:='Информация';
    CurrentMenu[0].Hint := 'Информация' + IntegerToString(i); //чтобы было видно зацикливание
    CurrentMenu[0].Name := 'info';
    CurrentMenu[1].ImgPath := '/profile.png';
    CurrentMenu[1].Hint := 'Личные данные';
    CurrentMenu[1].Name := 'profile';
    CurrentMenu[2].ImgPath := '/connect.png';
    CurrentMenu[2].Hint := 'Подключение';
    CurrentMenu[2].Name := 'onoff';
    CurrentMenu[3].ImgPath := '/exit.png';
    CurrentMenu[3].Hint := 'Выход';
    CurrentMenu[3].Name := 'exit';
    CurrentMenuItem := Menu(3);
    if CurrentMenuItem = 'info' then
    begin
      //
    end
    else if CurrentMenuItem = 'profile' then
    begin
      //
    end
    else if CurrentMenuItem = 'onoff' then
    begin
      //
    end
    else if CurrentMenuItem = 'exit' then
      Halt;
  until False;
end.

Если заменить GetKeyPressed на GetKeyClicked, то при работе с клавишами телефона, от зацикливания можно избавиться. Насколько я могу судить, GetKeyPressed не удаляет данные из буфера ввода (по аналогии с keypressed и readkey в pascal).
Но при работе с сенсором, при нажатии на выделенный пункт меню, так же происходит зацикливание. Т.е. SensorState не сбрасывается.
----
Можно ли исправить эту проблему? Или может я что-то делаю не так?
Проект и используемые либы в аттаче.


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

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