
Lib_menu32
Работа с графическим меню

---


ВНИМАНИЕ! 
Работает только в паре с библиотекой Lib_font32


init;
 - Инициализация меню. Очистка списка пунктов. 
   Можно вызывать неоднократно (например, для очистки памяти)

SetMenuWindow(x, y, w, h: integer);
 - Установить область, в которой будет отображаться наше меню.
   x, y - координаты левого верхнего угла;
   w и h - ширина и высота окна.
   По умолчанию устанавливается окно размером в весь дисплей телефона.

AddItem(im: image; s: string);
 - Добавить пункт меню. 
   im - картинка в качестве иконки,
   s - текст пункта меню
    
AddItem2(im: image; s, v: string);
 - Добавить пункт меню. 
   im - картинка в качестве иконки, 
   s - текст пункта меню, 
   v - доплнительный текстовый парамметр для данного пункта, 
       может содержать любую строку.
       
AddItem2 удобно использовать для идентификации пункта меню если меню у вас многоязыковое да ещё и с переменным количеством пунктов. Другой пример, вам нужно сделать телефонную книжку. Для удобства в s можно записать имя человека, а в v его телефон.
    
LoadCursor(im: image);
 - Задать картинку, которая будет использоваться в качестве курсора

None: image;
 - Возвращает прозрачную картинку размером 1х1 пиксел.
   Используется как вспомогательная для процедуры AddItem 
   (в тех случаях когда иконка для пункта не нужна)
    
DrawMenu;
 - Отрисовать меню. 
   Функция проходит в буфере экрана

HideMenu;
 - Спрятать меню (восстановить фон под меню). 
   Функция проходит в буфере экрана

CursorUp;
 - Сдвинуть курсор на один пункт вверх (если возможно)

CursorDown;
 - Сдвинуть курсор на один пункт вниз (если возможно)

Selected: integer;
 - Возвращает номер текущего выбранного пункта меню

SelectedItem: string;
 - Возвращает текст текущего выбранного пункта меню

SelectedValue: string;
 - Возвращает дополнительный текст выбранного пункта меню

ChangeString(s: string; i: integer);
 - Поменять текст надписи в пункте под номером i

ChangeImage(im: image; i: integer);
 - Сменить иконку для пункта под номером i

RemoveItem(i: integer);
 - Удалить из меню пункт с номером i (иконка тоже удалится)

GetCursor: integer;
 - Возвращает текущее положение курсора на экране 
   (не в списке, не путать с Selected!)

MenuFonts(f1, f2: integer);
 - Задать номера шрифтов, которые будут использоваться в меню.
   f1 - Шрифт, используемый для всех пунктов.
   f2 - Шрифт, используемый для выделенного пункта меню.
   По умолчанию используется нулевой шрифт в обоих случаях

SetCursor(i: integer);
 - Передвинуть курсор на выбранный пункт

Scroll;
 - Скроллировать (если нужно) длинный текст в пункте меню

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

ItemHeight(i: integer);
 - Задать явно высоту пунктов в меню (в пикселах).
   По умолчанию высота пунктов подбирается автоматически 
   (в зависимости от высоты иконок и текста)
    
SensorClick(x, y: integer);
 - Передать меню координаты нажатой точки на сенсорном экране,
   чтобы соответственно этому изменить положение курсора
    
SensorState: integer;
 - Возвращает текущее состояние сенсора.
   0 - Ничего особенного
   1 - Пользователь совершил двойной клик по какому-то пункту 
   (номер пункта можно узнать с помощью Selected/SelectedItem)
    
SetOffset(i: integer);
 - Задать отступ в пикселах от левого края меню до иконки 
   и от иконки до текста меню.


Проверено на телефоне SE K550i 
(сенсорный экран проверялся на эмуляторе NHAL)


---

by odd
