powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Заполнение Menu PowerBuilder элементами БД
13 сообщений из 13, страница 1 из 1
Заполнение Menu PowerBuilder элементами БД
    #38414899
LeS_05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть menu "Menu_ord",созданное через Menu Painter..например,пункт меню "Данные" содержит подпункты "Заказы","Справочник"..Подскажите,как в "Заказы" сделать еще один выпадающий список,содержащий все записи конкретного столбцы из БД?
надеюсь,удалось более-менее сформулировать задачу...
...
Рейтинг: 0 / 0
Заполнение Menu PowerBuilder элементами БД
    #38415047
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно конечно используя API добавить пункт, но вопрос - зачем?
Вам же наверное нужно что и на clicked прописать?
Да и товаров могут быть сотни или тысячи. Подумайте лучше над дизайном приложения.
...
Рейтинг: 0 / 0
Заполнение Menu PowerBuilder элементами БД
    #38415249
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот сдесь есть рецепт (если я правильно понял вопрос).
Ну а сбазой и как получить значения для меню, надеюсь, разберетесь.
...
Рейтинг: 0 / 0
Заполнение Menu PowerBuilder элементами БД
    #38415255
PaulJB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... ну или сдесь ...
...
Рейтинг: 0 / 0
Заполнение Menu PowerBuilder элементами БД
    #38416058
LeS_05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulJB,как в этом меню сделать меню 2-го уровня,т.е. "Заказы"->1... 2... и т.д. И как на созданное таким образом меню прописать событие "clicked"?

menu mi,m
m = create menu
for li_item = 1 to UpperBound(as_items[])/ 2 // массив с именами меню и их тегами
// пункты меню - это созданное в painter'e меню из одного пункта,
// со скриптом clicked который по тегу определяет что делать
mi = create m_dyn_menu_item
m.item[li_item] = mi.item[1].item[ 1] // вот так вот :))
m.item[li_item].text = as_items[li_item * 2 - 1]
m.item[li_item].tag = as_items[li_item * 2]
next
// замена подменю номер n на новое
// если n = UpperBound(m_mdi.item[]) + 1 то пункт меню добавляется в конец.
m_mdi.item[n]= m
m_mdi.item[n].Hide()
m_mdi.item[n].Show()
...
Рейтинг: 0 / 0
Заполнение Menu PowerBuilder элементами БД
    #38417483
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeS_05PaulJB,как в этом меню сделать меню 2-го уровня,т.е. "Заказы"->1... 2... и т.д. И как на созданное таким образом меню прописать событие "clicked"?
1. У присваемого меню тоже есть свойство item.
2. Скрипт на событие динамически в PowerBuilder не присваивается. Для этого у того самого меню с 1-м пунктом уже прописан обработчик clicked который триггерит в ParentWindow menu event с параметром - тэгом данного пункта меню. На окне создается этот event который в зависимости от параметра обрабатывает действия.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Заполнение Menu PowerBuilder элементами БД
    #39395675
kamehob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла сходная задача.
Выяснилось, что для всех вновь создаваемых с помощью подобного действия
LeS_05m.item[li_item] = mi.item[1].item[ 1] // вот так вот :))

пунктов меню функция ClassName() возвращает одно и то же значение - то самое, которое было у "образца" mi.item[1].item[ 1].
Нет ли возможности задавать динамически встраиваемым пунктам свой уникальный ClassName?
Спасибо.
...
Рейтинг: 0 / 0
Заполнение Menu PowerBuilder элементами БД
    #39395728
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто объясните, зачем? Класс у них один - меню. Ориентируйтесь по тексту или потегам
...
Рейтинг: 0 / 0
Заполнение Menu PowerBuilder элементами БД
    #39395810
kamehob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spas2001Просто объясните, зачем?

Объясняю. Сверху живёт система секьюрити, которая разграничивает доступ различных пользователей ко всем объектам и контролам основной системы. Разграничения прописываются в базу именно с использованием имён, возвращаемых функцией ClassName().
Если бы пунктам меню, созданным на основе содержимого референсной таблицы удалось прописать уникальные имена, они бы как родные были подхвачены имеющейся секьюритной надстройкой.
...
Рейтинг: 0 / 0
Заполнение Menu PowerBuilder элементами БД
    #39396495
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так у вас ничего не выйдет скорее всего. Возможно можно сделать объект унаследованный от меню и уже от него создавать новое меню. Но в этом случае все созданные пункты тоже будут иметь одинаковое имя класса. Остаются варианты - доработать модуль доступа и не создавать динамически (запихать все и делать видимо/невидимо)
...
Рейтинг: 0 / 0
Заполнение Menu PowerBuilder элементами БД
    #39396677
kamehob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spas2001Остаются варианты - доработать модуль доступа...
Спасибо. Варианты просматриваются различные, и этот - один из них. Пока остановился на следующем:

В меню m_dyn_menu_item (из примера кода выше) с помощью кондового копипаста засунул не один пункт, а 256. Само собой, с уникальным именем у каждого, но с идентичным скриптом из двух строчек.
В таблицу со списком пунктов динамического меня добавилось уникальное (вкупе с другими полями PK) поле с номером от 1 до 256.
Соответственно, в правой части этого присваивания m.item[li_item] = mi.item[1].item[ 1] используется не единица, а номер пункта, полученный из БД.

Понятно, что 256 в данном случае - ограничение на количество пунктов каждого динамического меню, создаваемого подобным образом. Но на данном этапе есть мнение, что такого ограничения хватит с головой.
Ну да, объект m_dummy_menu получился размером около 700 КБ, но вроде бы живой.
...
Рейтинг: 0 / 0
Заполнение Menu PowerBuilder элементами БД
    #39397087
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем понятно, но в данном случае я порекомендовал бы пересмотреть дизайн. Выпадающий список или PictureListBox были бы уместнее. Выбрать какой-то пункт из такого огромного меню непросто.
...
Рейтинг: 0 / 0
Заполнение Menu PowerBuilder элементами БД
    #39399943
kamehob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
spas2001Выбрать какой-то пункт из такого огромного меню непросто.
Да, но кто сказал, что оно будет огромным? Упомянутые выше 256 - ограничение сверху. Пункты в динамический раздел меню добавляются только по записям из таблицы. В реальности их количество вряд ли превысит десяток. Предполагается, что под каждый такой пункт отдельный код (не PB) при необходимости должен создаваться.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Заполнение Menu PowerBuilder элементами БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]