powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как сделать удобный MDI-интерфейс?
18 сообщений из 18, страница 1 из 1
Как сделать удобный MDI-интерфейс?
    #32889434
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые программисты и дизайнеры! Пожалуйста, помогите решить проблему неудобного интерфейса!

Что имеем:
MDI-приложение (АСУ Предприятия) с ОГРОМНЫМ количеством пунктов меню.

Недостатки:
1. Пользователю трудно в нем ориентироваться.
2. Неудобно искать мышкой нужный пункт меню, даже если помнишь где он находится
3. Сложно сделать настройку меню под конкретного пользователя.

Решение:
Предствить меню в виде дерева (treeview). Т.е. сделать что-то наподобие интерфейса Sybase. Чтобы у каждого пользователя был свой "workspace", настраиваемый администратором. Всё уже реализовано, но остались две проблемы, которые я не могу решить.

Проблемы:
1. Не могу сделать удобное окошко "System Tree", в котором показывается Workspace. Это окошко должно быть привязано к MDI и в то-же время легко перемещалось и "прилипало" к стенкам окна.

2. Не могу отловить изменение размера рабочей области MDI. Например, когда пользователь убирает ToolBar, размеры окна остаются прежними, а размеры рабочей области изменяются.

Посоветуйте, как быть.

Или может есть другие, более удобные и красивые, решения для построения интерфейса большого MDI-приложения?
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32889528
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Louder2. Не могу отловить изменение размера рабочей области MDI. Например, когда пользователь убирает ToolBar, размеры окна остаются прежними, а размеры рабочей области изменяются.
Размеры рабочей обасти определяются WorkSpaceHeight() и WorkSpaceWidth() соответственно. По ним и нужно ресайзиться. На перемещение тулбара реагирует адекватно.
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32889852
gal20
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запихать информацию о пунктах меню в БД, для каждого пользователя назначать доступность каждого пункта меню (либо на пользователя, либо на группу).
Сделать один режим ведения иерархического списка меню.
После этого забыть о проблемах большого меню навсегда.

Best wishes.
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32889892
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IkarРазмеры рабочей обасти определяются WorkSpaceHeight() и WorkSpaceWidth() соответственно. По ним и нужно ресайзиться. На перемещение тулбара реагирует адекватно.
Так как же отловить изменение этих размеров? Нужно событие, которого, к сожалению, нет.
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32889900
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gal20Сделать один режим ведения иерархического списка меню.
Поясните пожалуйста. Что за режим?
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32889910
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LouderТак как же отловить изменение этих размеров? Нужно событие, которого, к сожалению, нет.
Код на resize окна:
Код: plaintext
1.
2.
3.
4.
5.
dw_list.Resize( dw_list.width , WorkSpaceHeight() - dw_list.y)
st_bar.y = dw_list.y
st_bar.window_width = WorkSpaceWidth() 
st_bar.height = dw_list.height
tab_data.y = dw_list.y
tab_data.Resize(WorkSpaceWidth() - tab_data.x, dw_list.height)
прекрасно отрабатывает...
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32889951
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ikarпрекрасно отрабатывает...
При перетаскивании ToolBar-а событие resize не срабатывает, а рабочая область изменяется. Это логично, т.к. размеры окна-фрейма не меняются.
Может есть во фрейме ещё какое-то событие на изменение рабочей области?
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32890117
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ToolbarMoved ?
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32890123
gal20
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Louder gal20Сделать один режим ведения иерархического списка меню.
Поясните пожалуйста. Что за режим?

Создаете в БД таблицу, в которой в каждой записи будет храниться информация об одном пункте меню. Помимо поля первичного ключа добавляете поле, где будет храниться значение первичного ключа записи с пунктом меню вышележащего уровня (код "предка"). Назначаете соответствующий foreign key . Создаете datawindow с единственным входным параметром - кодом "предка". По нему делаете retrieve, и всегда получаете все пункты меню текущего уровня. Налаживаете навигацию по иерархическому списку. Добавляете еще одну таблицу, где будет храниться информация о доступе к этому пункту меню каждого user'а или группы. dw на основе этой таблицы ставите в подчинение основному списку.
На событии create mdi-окна проходитесь по иерархическому списку меню и дополняете Ваше существующее меню нужными пунктами для текущего user'а.
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32891532
pand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gal20 Louder gal20Сделать один режим ведения иерархического списка меню.
Поясните пожалуйста. Что за режим?


На событии create mdi-окна проходитесь по иерархическому списку меню и дополняете Ваше существующее меню нужными пунктами для текущего user'а.
А можно рассказать по подробнее как динамически добавлять пункты в меню.
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32891596
Фотография DenisVK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32891943
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор Всё уже реализовано, но остались две проблемы Так как все уже реализовано, наверное мое предложение не подойдет, просто расскажу как сделал я.
TreeView является частью не главного окна Frame, а частью окна "проводника", которое окрывается как Shеet, в котором и открываются все объекты при выборе пункта в дереве. То есть я в главном окне могу открыть несколько "проводников", каждый из которых может отражать разное подмножество системы, либо одно множество - в разных ветвях, либо каждый проводник может быть подключен к разным БД.
Проводник реализован так, что отображает списки данных и отчеты внутри себя, а формы редактирования как немодальные окна (примерно как в PowerDesigner)
Возможно это решение временное, пока в PB нет реализации dockable windows.
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32892308
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rcryoТак как все уже реализовано, наверное мое предложение не подойдет, просто расскажу как сделал я.
TreeView является частью не главного окна Frame, а частью окна "проводника", которое окрывается как Shеet, в котором и открываются все объекты при выборе пункта в дереве. То есть я в главном окне могу открыть несколько "проводников", каждый из которых может отражать разное подмножество системы, либо одно множество - в разных ветвях, либо каждый проводник может быть подключен к разным БД.
Проводник реализован так, что отображает списки данных и отчеты внутри себя, а формы редактирования как немодальные окна (примерно как в PowerDesigner)
Возможно это решение временное, пока в PB нет реализации dockable windows.
Спасибо. Отличный подход, мне нравится. По-моему удобно и красиво.
Есть только несколько вопросов:
1. Как тулбар запихнуть в окно? Билдер позволяет это делать? И что будет, если его внутри окна таскать?
2. В окнах редактирования тоже встроен ToolBar? Какой у них WindowType?
3. Как табличная часть окна-проводника отреагирует на добавление новой записи через окно редактирования? Будет ретривится? Кстати, retrieve as needed используете?
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32893300
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно тоже самое, что предложил rcryo, но во фрейме.
Explorer type control from Philip Salgannik
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32893365
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Как тулбар запихнуть в окно? Билдер позволяет это делать? И что будет, если его внутри окна таскать?
На самом деле у меня toolbar не в окне, а в visual userobject, который появляется в правой части проводника, при выборе элемента в treeview. ActiveBar позволяет это делать. см. Data Dynamics только я использую старую версию 1.0.6, со второй были какие-то проблемы (может уже исправили), щас не помню. Если его (toolbar) таскать, то срабатывает событие resize объекта который его содержит, с правильными значениями newwidth, newheight
2. В окнах редактирования тоже встроен ToolBar? Какой у них WindowType?
тот же ActiveBar
3. Как табличная часть окна-проводника отреагирует на добавление новой записи через окно редактирования? Будет ретривится? Кстати, retrieve as needed используете?
После изменения или добавления записи в любом из объектов, посылается оповещение менеджеру объектов, который рассылает сообщение об обновлении (со значением первичного ключа добавленной/измененной записи) другим объектам, которые имеют источником данных ту же таблицу в БД. Объект, получивший сообщение об обновлении, действеут по обстоятельствам, либо полный Retrieve, либо retrieve записи в DW по значению первичного ключа, либо ничего не делает.
Retrieve as Need не использую и вам не советую. Чтобы ограничить выборку есть масса способов, на форуме уже обсуждалось.
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32893966
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем огромное спасибо. Решение принял. Постараюсь прислать скриншот, когда все сделаю.
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32895728
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как сделать удобный MDI-интерфейс?
    #32907918
Louder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rcryoНа самом деле у меня toolbar не в окне, а в visual userobject, который появляется в правой части проводника, при выборе элемента в treeview. ActiveBar позволяет это делать. см. Data Dynamics только я использую старую версию 1.0.6, со второй были какие-то проблемы (может уже исправили), щас не помню. Если его (toolbar) таскать, то срабатывает событие resize объекта который его содержит, с правильными значениями newwidth, newheight
Пожалуйста, поделитесь опытом использования ActiveBar. Хорошо бы несколько кусочков кода и исходники userobject-а.
У него есть две версии - 200$ и 1400$. Не могу понять чем отличаются. И вообще обязательно ли его покупать? Или есть бесплатный аналог?
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как сделать удобный MDI-интерфейс?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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