![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамическая вставка пунктов меню в «нужные» места, как?
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
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]
> у меня документы выходит разнородные по сути
Это нормально. Но каждый из них все же подразумевает ОБЩЕЕ действие - "Сохранить".
Если уж тебе так приспичило угодить тупому юзеру, то организуй верхнеуровневые меню "Отчеты" и "Графики", а в каждом из них - "Сохранить".
Если есть хотя бы один активный объект-отчет, делай видимым меню "Отчеты" (и в нем условно разрешай подменю "Сохранить"). Аналогично для объекта-графика.