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