Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Динамическая вставка пунктов меню в «нужные» места, как?


Страницы:   1 2 3 4

Kolan ©   (2007-08-30 12:21:00) 

Здравствуйте,
Дано:
 1. Допустим мы умеем вставлять пункт в гл. меню(и сепараторы тоже умеем). Сейчас умеем вставлять только в конец меню.
 2. Нам дают пять пунктов: «Новый», «Открыть», «Сохранить», «Сохранить как…», «Выход».
 3. Причм пункты дают в произвольном порядке и в разные мом времени, из разных мест программы.

Задание:
 Вставить данные пункты в «правильном» порядке. Правидьный порядок такой:
Новый
-
Открыть
-
Сохранить
Сохранить как…
-
Выход


Проблемма:
 Понятно, что с учетом(1) пункты вставяться как попало…

Вопрос:
 Как модифицировать алгоритм вставки чтобы добится желаемого.

ЗЫ
 У меня идей нет :(


Сергей М.   (2007-08-31 16:08:00) [1]


> Жуков Олег   (31.08.07 13:01) [72]


> всё знает, а сказать не может


А зачем ему что-то говорить, если его не спрашивают ? Чего ему зазря шуметь ?)

Вот когда у него кто-то спросит QueryInterface, тогда он и ответит S_OK или S_FALSE


Жуков Олег   (2007-08-31 13:01:00) [2]


> Сергей М. ©   (31.08.07 08:39) [70]
>
>

Интересно, всё знает, а сказать не может...


Сергей М.   (2007-08-31 08:39:00) [3]


> приложение разберётся, поддерживает он этот интерфейс или
> нет


Это как же оно "разберется" ?

Только сам объект (и никто кроме него) знает, реализует он такой-то интерфейс или не реализует ..


Kolan   (2007-08-31 08:39:00) [4]

> Необязательно тогда ему реализовывать ISaveable совсем,
> а приложение разберётся, поддерживает он этот интерфейс
> или нет.

На самом деле это реализовать сожно в данном случае, так как плагины общаются через медиатор передавая друг другу комманды(объекты) — целое дело короче…

С предопределёнными секциями тоже нормально,
Вот и я думаю, что нормально.

только лишние разделители придётся интеллектуально прятать.
Угу.


Жуков Олег   (2007-08-31 01:12:00) [5]


> плагине, который показывает окно «О программе» иметь тучу
> лишних(пустых) методов.
>

Необязательно тогда ему реализовывать ISaveable совсем, а приложение разберётся, поддерживает он этот интерфейс или нет. С предопределёнными секциями тоже нормально, только лишние разделители придётся интеллектуально прятать.


oldman   (2007-08-30 17:55:00) [6]


> Kolan ©   (30.08.07 17:53) [66]
> Мало прочел. Надобность есть.


Не вижу такой надобности...


Kolan   (2007-08-30 17:55:00) [7]

> Не вижу такой надобности…


> ЗАЧЕМ ВСТАВЛЯТЬ ПУНКТЫ МЕНЮ ВО ВРЕМЯ РАБОТЫ ПРОГИ??????

ПЛАГИНЫ!!!??? $%#

:)


Kolan   (2007-08-30 17:53:00) [8]

> Почитал месс 10 и устал…

Мало прочел. Надобность есть.


oldman   (2007-08-30 17:47:00) [9]

Почитал месс 10 и устал...

ЗАЧЕМ ВСТАВЛЯТЬ ПУНКТЫ МЕНЮ ВО ВРЕМЯ РАБОТЫ ПРОГИ??????
ОСОБЕННО ТИПА "НОВЫЙ","СОХРАНИТЬ","ВЫХОД"???
Идиотизм...
Можно-же их просто делать активными\неактивными.


Kolan   (2007-08-30 17:38:00) [10]

> Колян-то ведь сам заявил, что не знает пока, каких плагинов
> он еще наплодит, будучи в здравом уме и добром здравии)

Да, этот вариант шило на мыло получается…


> Углублюсь в советы:

Благодарю Сергей, идею я эту понял(стратегия/состояние) да так часто и делаю просто плагин у меня может делать все что угодно, и глупо как-то в плагине, который показывает окно «О программе» иметь тучу лишних(пустых) методов.

Но это реализация — ну её :)


> Да ведь он у тебя перед носом !)
>
> Меню «Save[ as…]» Delphi IDE)


Не сейв в Delphi сохраняет все скопом(для формы например) а у меня как получится так:

(если бы я делал Delphi)Если видим форму и жмем сохранить, то сохраняется форма(dfm), если видим код и жмем сохранить, то сохр код… Имхо геморой…


Сергей М.   (2007-08-30 16:55:00) [11]


> vpbar ©   (30.08.07 16:52) [62]
> От Коляна и возьмутся


Колян-то ведь самзаявил, что не знает пока, каких плагинов он еще наплодит, будучи в здравом уме и добром здравии)


vpbar   (2007-08-30 16:52:00) [12]

>>Сергей М. ©   (30.08.07 16:48) [61]
>>Откуда они, настройки этого  "супурпупернового плагина от Коляна" возьмутся
От Коляна и возьмутся. Или пусть сам юзверь выбирает куда вставить пункты


Сергей М.   (2007-08-30 16:48:00) [13]


> vpbar ©   (30.08.07 16:43) [60]
>
> Строить все меню в рантайм беря названий, действия и т.п.
>  из файла конфигурации


Угу.

Вот, к примеру, юзер захотел поиметь супурпуперновый плагин от Коляна (С).

Откуда они, настройки этого  "супурпупернового плагина от Коляна" возьмутся в том самом файле ?)


vpbar   (2007-08-30 16:43:00) [14]

Строить все меню в рантайм беря названий, действия и т.п. из файла конфигурации. (Например в формате xml или ini). Тогда при добавлении плагина (набора плагинов) к нему прилагается конфигурация меню.


Сергей М.   (2007-08-30 15:30:00) [15]

Желаешь таки ублажить тупого юзера ?

Углублюсь в советы:

Интерфейс ISaveable твоего плагин-объекта для этого может реализовать следующие методы и св-ва:

GetSaveMenuCaption
GetSaveAsMenuCaption
CanSaveNow
Save
SaveAs

А дальше тебе, вполне может быть, понадобится печать разнородных документов.

По полной аналогии с ISaveable реализуешь IPrintable:

GetPrintMenuCaption
GetPrintPropertiesMenuCaption
CanPrintNow
Print
PrintProperties


Сергей М.   (2007-08-30 15:16:00) [16]


> А можно пример проги с именно разнородыми документами и
> доним пунктом «Сохранить»


Да ведь он у тебя перед носом !)

Меню "Save[ as..]" Delphi IDE)


Kolan   (2007-08-30 15:00:00) [17]

> Это нормально.

А можно пример проги с именно разнородыми документами и доним пунктом «Сохранить», я что-то смотрю везде один тип документа…


Kolan   (2007-08-30 14:49:00) [18]

> Если уж тебе так приспичило угодить тупому юзеру, то организуй
> верхнеуровневые меню «Отчеты» и «Графики», а в каждом из
> них — «Сохранить».
>
> Если есть хотя бы один активный объект-отчет, делай видимым
> меню «Отчеты» (и в нем условно разрешай подменю «Сохранить»)
> . Аналогично для объекта-графика.

Не это уже слишком :) Тут я и сам запутаюсь…

Блин где нить бы прочитать про такие UI, типа Apple'овского Human Interface…


Kolan   (2007-08-30 14:45:00) [19]

> И если чел в дан.момент пялится в график, то как он может
> сохранить отчет, если меню «Сохранить» работает в контексте
> графика. а не отчета ?)

Вот я о том же … вот я за два разных пункта и голосую…


> Если так, то опять же виноват ТЫ как программист

Возможно, но не уверен. Суть такая чел проводит измерения. Каждое измерение — это график. Кроме того это еще и строка отчета.

Вот он меряе мерят смотрит на графики, а потом все намереное надо сохранить для статистики для этого нужен отчет…

Ошибка тут наверно есть просто UI всегда один и тот же а пользователей два типа…

1. Исследователь — он на графики в основном смотрит, анализирует, но и отчет иногда ему нужен.
2. Оператор — он на графики смотрит в основном в кач развлечения — его результат это отчёт…

Вот такого разделения нет, видимо оно нужно, но сейчас реализовать его невозможно(сроки итд…)


Сергей М.   (2007-08-30 14:41:00) [20]


> у меня документы выходит разнородные по сути


Это нормально. Но каждый из них все же подразумевает ОБЩЕЕ действие - "Сохранить".

Если уж тебе так приспичило угодить тупому юзеру, то организуй верхнеуровневые меню "Отчеты" и "Графики", а в каждом из них - "Сохранить".

Если есть хотя бы один активный объект-отчет, делай видимым меню "Отчеты" (и в нем условно разрешай подменю "Сохранить"). Аналогично для объекта-графика.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо