Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как сделать удобный MDI-интерфейс? / 18 сообщений из 18, страница 1 из 1
28.01.2005, 14:41
    #32889434
Louder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать удобный MDI-интерфейс?
Уважаемые программисты и дизайнеры! Пожалуйста, помогите решить проблему неудобного интерфейса!

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

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

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

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

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

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

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

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

Best wishes.
...
Рейтинг: 0 / 0
28.01.2005, 16:38
    #32889892
Louder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать удобный MDI-интерфейс?
IkarРазмеры рабочей обасти определяются WorkSpaceHeight() и WorkSpaceWidth() соответственно. По ним и нужно ресайзиться. На перемещение тулбара реагирует адекватно.
Так как же отловить изменение этих размеров? Нужно событие, которого, к сожалению, нет.
...
Рейтинг: 0 / 0
28.01.2005, 16:40
    #32889900
Louder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать удобный MDI-интерфейс?
gal20Сделать один режим ведения иерархического списка меню.
Поясните пожалуйста. Что за режим?
...
Рейтинг: 0 / 0
28.01.2005, 16:41
    #32889910
Ikar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать удобный MDI-интерфейс?
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
28.01.2005, 16:57
    #32889951
Louder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать удобный MDI-интерфейс?
Ikarпрекрасно отрабатывает...
При перетаскивании ToolBar-а событие resize не срабатывает, а рабочая область изменяется. Это логично, т.к. размеры окна-фрейма не меняются.
Может есть во фрейме ещё какое-то событие на изменение рабочей области?
...
Рейтинг: 0 / 0
28.01.2005, 18:12
    #32890117
ЗоринАндрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать удобный MDI-интерфейс?
ToolbarMoved ?
...
Рейтинг: 0 / 0
28.01.2005, 18:15
    #32890123
gal20
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать удобный MDI-интерфейс?
Louder gal20Сделать один режим ведения иерархического списка меню.
Поясните пожалуйста. Что за режим?

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


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


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