![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Динамическая вставка пунктов меню в «нужные» места, как?
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]> И это ты называешь УСТОЯВШИМСЯ меню ?
>
> Мдя
Устоявшийся структурой меню
Да. «Сохранить отчёт» нельзя вставить после «Выход» тк это идиотизм