Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.23;
Скачать: CL | DM;

Вниз

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

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


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


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

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


 
Reindeer Moss Eater ©   (2007-08-30 14:12) [41]

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

<Цитата>

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


 
Kolan ©   (2007-08-30 14:13) [42]

В Delphi есть &laquo;сохранить&raquo; и &laquo;сохранить проект&raquo;&#133


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


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


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

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

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


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

>
> Именно так и никак иначе !
>
> Краткость &#151; сестра таланта)

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

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

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

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


 
Kolan ©   (2007-08-30 14:21) [45]

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


Дык вот я и сомневаюсь что это условие True. От закладки до меню еще ToolBar можно и запутаться пока машь дотянешь.
И надо всегда держать в памяти &laquo;Где я&raquo;&#133

ЗЫ не увидел пост&#133

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

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


 
Kolan ©   (2007-08-30 14:23) [46]

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

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

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


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


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


Да что ты !?

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

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


 
Kolan ©   (2007-08-30 14:25) [48]

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

Все таки так люди поступают&#133


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


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


И что ?

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

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


 
Kolan ©   (2007-08-30 14:32) [50]

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

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

И вот чел(кстати средней и низкой квалификации, программа в основном используется для проверки и отбраковки изделий, то есть тупая, однообразная работа) все время сохраняет отчет &#151; это и есть его &laquo;результат работы&raquo;.

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

А в случае &laquo;Закладко зависимого :)&raquo; сохранить он будет раз через раз попадать на сохр графика &#151; это плохо.


 
Kolan ©   (2007-08-30 14:35) [51]

> И что ?
>
> Это есть &laquo;устоявшееся&raquo; меню ?
>
> Ну а где тогда &laquo;Save project as &#133&raquo; из столь же &laquo;устоявшегося&raquo;
> меню Delphi IDE ?

Еще раз говорю устоявшаяся структура то есть правила типа: &laquo;Сохранить&raquo; нельзя втыкать до &laquo;Новый&raquo; итд&#133
Как это назвать я незнаю&#133


> И что ?

Анализирую как другие люди делают. Сдела вывод что вариант &laquo;Сохранить график&raquo;, &laquo;Сохранить отчёт&raquo; вполне нормальное решения&#133

Просто у меня документы выходит разнородные по сути, пока мое имхо &#151; это вариант с двумя пунктами и реализация с пом секций&#133

Но я не уверен вот и думаю&#133


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


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


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

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


 
Kolan ©   (2007-08-30 14:37) [53]

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

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


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


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


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

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

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


 
Kolan ©   (2007-08-30 14:45) [55]

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

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


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

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

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

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

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

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


 
Kolan ©   (2007-08-30 14:49) [56]

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

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

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


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

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

А можно пример проги с именно разнородыми документами и доним пунктом &laquo;Сохранить&raquo;, я что-то смотрю везде один тип документа&#133


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


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


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

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


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

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

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

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

GetSaveMenuCaption
GetSaveAsMenuCaption
CanSaveNow
Save
SaveAs

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

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

GetPrintMenuCaption
GetPrintPropertiesMenuCaption
CanPrintNow
Print
PrintProperties


 
vpbar ©   (2007-08-30 16:43) [60]

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


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


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


Угу.

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

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


 
vpbar ©   (2007-08-30 16:52) [62]

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


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


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


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


 
Kolan ©   (2007-08-30 17:38) [64]

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

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


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

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

Но это реализация &#151; ну её :)


> Да ведь он у тебя перед носом !)
>
> Меню &laquo;Save[ as&#133]&raquo; Delphi IDE)


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

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


 
oldman ©   (2007-08-30 17:47) [65]

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

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


 
Kolan ©   (2007-08-30 17:53) [66]

> Почитал месс 10 и устал&#133

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


 
oldman ©   (2007-08-30 17:55) [67]


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


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


 
Kolan ©   (2007-08-30 17:55) [68]

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


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

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

:)


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


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

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


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


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


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

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


 
Kolan ©   (2007-08-31 08:39) [71]

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

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

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

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


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


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

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


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


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


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


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

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



Страницы: 1 2 вся ветка

Текущий архив: 2007.09.23;
Скачать: CL | DM;

Наверх




Память: 0.63 MB
Время: 0.024 c
4-1175167368
MikeZ
2007-03-29 15:22
2007.09.23
Нажатие на элемент меню чужого приложения


2-1188472359
kudatsky
2007-08-30 15:12
2007.09.23
Можно-ли ввести данные в TStringGrid в Design Time ?


15-1187797221
Неудачник
2007-08-22 19:40
2007.09.23
Программисты – это армия физиков-неудачников


2-1188290749
Шестаков Антон
2007-08-28 12:45
2007.09.23
программно заполнить combobox


2-1188224368
hahol
2007-08-27 18:19
2007.09.23
простите за глупый вапрос