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) пункты вставяться как попало…

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

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


Kolan   (2007-08-30 14:37:00) [21]

> А в случае «Закладко зависимого :)» сохранить он будет раз
> через раз попадать на сохр графика — это плохо.

Потому что он в основном работает на закладке с графиками, а на закладку с отчетом, обычно, надо переключится чтобы его сохранить…


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


> все время сохраняет отчет — это и есть его «результат работы»


Если так, то опять же виноват ТЫ как программист, сделавший свой GUI интуитивно непонятным.

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


Kolan   (2007-08-30 14:35:00) [23]

> И что ?
>
> Это есть «устоявшееся» меню ?
>
> Ну а где тогда «Save project as …» из столь же «устоявшегося»
> меню Delphi IDE ?

Еще раз говорю устоявшаяся структурато есть правила типа: «Сохранить» нельзя втыкать до «Новый» итд…
Как это назвать я незнаю…


> И что ?

Анализирую как другие люди делают. Сдела вывод что вариант «Сохранить график», «Сохранить отчёт» вполне нормальное решения…

Просто у меня документы выходит разнородные по сути, пока мое имхо — это вариант с двумя пунктами и реализация с пом секций…

Но я не уверен вот и думаю…


Kolan   (2007-08-30 14:32:00) [24]

> Он знает одно — ему надо просто СОХРАНИТЬ результаты своей
> работы.

Вот в том то и дело что в описаной конкретной задаче основной результат — это отчёт и именно его сохраняют а сохранение графика — это экзотическая функция, которая нужна оч. редко.

И вот чел(кстати средней и низкой квалификации, программа в основном используется для проверки и отбраковки изделий, то есть тупая, однообразная работа) все время сохраняет отчет — это и есть его «результат работы».

При наличии двух пунктов
Сохр график
Сохр отчёт
Человек всегда тыкает «сохранить отчёт»

А в случае «Закладко зависимого :)» сохранить он будет раз через раз попадать на сохр графика — это плохо.


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


> В фотошопе есть
> Save
> Save a version
> Save for Web


И что ?

Это есть "устоявшееся" меню ?

Ну а где тогда "Save project as .." из столь же "устоявшегося" меню Delphi IDE ?


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


> в вашем варианте выходит один и тот же пункт делает разные
> вещи в зав от закладки — имхо это не очевидно


Да что ты !?

"Сохранить" - оно и в Африке "Сохранить".

Юзеру, если он вменяемый и знает с чем он сейчас работает (то ли с графиком, то ли с отчетом), начхать на то КАК ты реализуешь то или иное сохранение. Он знает одно - ему надо просто СОХРАНИТЬ результаты своей работы. А вот тебе в зависимости от контекста нужно (если это действительно требуется) позаботиться о, например, соответствующем, предупреждении вида : "Документ- отчетбудет перезаписан..", или "Документ- графикбудет перезаписан.."


Kolan   (2007-08-30 14:25:00) [27]

В фотошопе есть
Save
Save a version
Save for Web

Все таки так люди поступают…


Kolan   (2007-08-30 14:23:00) [28]

> Реализуй у всех своих плагинов интерфейс, например, ISaveEngine

Это реализация, благодарю, я приму во внимание…

А что идея с секциями вам вообще не нравится(Если всеж таки не делать одно «Сохранить» на всех)?


Kolan   (2007-08-30 14:21:00) [29]

> при условии что юзер выбирая некий пункт меню для сохранения
> знает, что речь сейчас идет именно об отчете


Дык вот я и сомневаюсь что это условие True. От закладки до меню еще ToolBar можно и запутаться пока машь дотянешь.
И надо всегда держать в памяти «Где я»…

ЗЫ не увидел пост…

> А если не нашли, то делать аппенд

Что есть аппенд?


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

>
> Именно так и никак иначе !
>
> Краткость — сестра таланта)

Теоритически это возможно(хоть и не реализовано), но вот как тогда получится:

У меня есть две закладки, на одной график, на другой таблица(отчёт).

Выходит чтобы сохранить график я должен открыть закладку с графиком полезть в меню и сохранить, а если таблицу, то перейти в закладку с таблицей полезть в меню и сохранить…

Имхо это странно. Вот когда у меня доступ к функциям(кнопки) прям внутри закладки, то тут все я ясно до них и не долезть не открыв звкладку…
А в вашем варианте выходит один и тот же пункт делает разные вещи в зав от закладки — имхо это не очевидно…


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


> Kolan ©   (30.08.07 14:11) [38]


Реализуй у всехсвоих плагинов интерфейс, например, ISaveEngine.
Пусть этот инт-с имеет св-во Saveable и методы Save, SaveAs

Тогда запрос у плагина зн-я св-ва Saveable позволит разрешить пункт меню "Сохранить", если плагин реализует сохранение своих данных, и запретить, если иначе.

Если пункт разрешен, то он вызывает метод ISaveEngine.Save соответствующего плагин-объекта.


Kolan   (2007-08-30 14:13:00) [32]

В Delphi есть «сохранить» и «сохранить проект»…


Reindeer Moss Eater   (2007-08-30 14:12:00) [33]

Ясно, нехватает только: «а если не нашли»…

<Цитата>

А если не нашли, то делать аппенд


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


> а что он сохранит отчёт, или еще что-то зависит от контекста,
>  так?


Именно так и никак иначе !

Краткость - сестра таланта)


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


> Куда поместить это «сохранить отчёткак…»


Ну начертаздесь слово "отчет" ?
Чем "Сохранить как .." принципиально отличается от "Сохранить отчет как ..", при условии что юзер выбирая некий пункт меню для сохранения знает, что речь сейчас идет именно об отчете(активном док-те, с которым он работает), а не о каком-то док-те иного типоназначения ?


Kolan   (2007-08-30 14:11:00) [36]

> «Идиотизм» есть уже само наличие слова «Отчет» в меню «Файл»)

Вот в Windows media есть «Открыть»  и «открыть URL» URL — идиотизм?
А где прочесть как надо? И что делать в том конкретном примере что я привел?

Я кажется начинаю понимать… Вы намикаете что нужен только 1 пункт «Сохранить»
а что он сохранит отчёт, или еще что-то зависит от контекста, так?

Reindeer Moss Eater ©   (30.08.07 14:05)
Ясно, нехватает только: «а если не нашли»…


Kolan   (2007-08-30 14:06:00) [37]

> многодокументных приложений

У меня не MDI вроде…

А где прочесть? Может я ошибаюсь… Поясните что не так?

Вот реальный пример:
http://www.delphimaster.ru/cgi-bin/forum.pl?n=0&id=1188460255

Плагин-редактор отчетов ему надо чтобы сохранить как было всегда доступно… Куда поместить это «сохранить отчёт как…» у меня идея одна — гл. меню…


Reindeer Moss Eater   (2007-08-30 14:05:00) [38]

Просто объясни тк я не понимаю.

Создать новый элемент с именем AItemName.
Найти элемент с именем ARefName.
Если нашли, взять индекс найденного и выполнить инсерт с этим индексом.
Если параметр "вставить перед" был false, то взять следующий элемент после найденного и делать инсерт с его индексом.


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


> Да. «Сохранить отчёт» нельзя вставить после «Выход» — тк
> это идиотизм


"Идиотизм" есть уже само наличие слова "Отчет" в меню "Файл")


Kolan   (2007-08-30 14:02:00) [40]

> И это ты называешь УСТОЯВШИМСЯ меню ?
>
> Мдя …

Устоявшийся структурой меню…

Да. «Сохранить отчёт» нельзя вставить после «Выход» — тк это идиотизм…


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

Наверх

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