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-30 14:02:00) [41]

Колян, тебе надо серьезно поработать над изучением УСТОЯВШИХСЯ принципов организации UI многодокументных приложений (MDI)

Иначе продать свой бардак тебе придется себе в убыток)


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

> ARefname

Это что?


> Ну написал и чо?

При меню:
Новый
Выход


Что должен сделать вызов:
InsertMenuItem('Файл', 'Открыть', 'Сохранить');
?

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

ЗЫ
 Мож  ARefname  я неверно истолковал…


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


> Тот же редактор отчётов, куда поместить «Сохранить отчёт»,
>  «Открыть отчёт»? Ессно лучьше место — это меню «Файл»


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

Мдя ...


Kolan   (2007-08-30 13:58:00) [44]

> [27] Сергей М. ©   (30.08.07 13:53)
> И рекомендую, кстати, для «плагиноспецифичных» пунктов меню
> (надеюсь, ты не будешь утверждать, что они «устоявшиеся»
> ?) организовать отдельные подменю.


Такое меню уже есть. Собссно для него и реализована простая вставка в конец — там порядка нет.

Но вот оказывается некоторым плагина надо еще кудато пристраиваться.

Тот же редактор отчётов, куда поместить «Сохранить отчёт», «Открыть отчёт»? Ессно лучьше место — это меню «Файл»…


Reindeer Moss Eater   (2007-08-30 13:58:00) [45]

Хорошо можешь написать такую команду типа: «„Добавь пункт «Открыть» в меню «Файл»“».

function InsertMenuItem(const AItemName,ARefname : string; AInsertBefore : boolean) : integer;
begin
end;

Ну написал и чо?


Kolan   (2007-08-30 13:55:00) [46]

> Сказали же уже какая.

Хорошо можешь написать такую команду типа: «„Добавь пункт «Открыть» в меню «Файл»“».

Прям шас и протестируем будет ли она работать корректно.

Команда вида «Добавь пункт „Открыть“ в меню „Файл“, полсе „Новый“ и до „Сохранить“» негодится, так как не понятно куда вставлять в таком случае:
Новый
Выход


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


> То есть предлогаете сделать меню сразу


Не предлагаю, а настоятельно рекомендую.

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


Reindeer Moss Eater   (2007-08-30 13:51:00) [48]

Вся же и суть в том какая и какона должна работать…

Сказали же уже какая.
Должна быть возможность передавать имя опорного пункта и признак куда именно вставлять новый пункт до или после.


Kolan   (2007-08-30 13:51:00) [49]

> Кто писал интефейс добавления пунктов?

Все писал я. Код, я думаю тут не нужен, я же не конкретное решение прошу, а идею, алгоритм, д. взаимодействия…


Kolan   (2007-08-30 13:49:00) [50]

>
> надо чтобы появилась новая возможность.

Ессно надо я еще в [0] это сказал. Вся же и суть в том какая и какона должна работать…


> «Разрешить/Запретить»

То есть предлогаете сделать меню сразу.

К сожалению не подходит. Все из-за плагинов.
Пример:
Я продаю программ которая делает что-то. А кроме того я могу продать(отдельно) плагин-редактор отчетов. И если у пользователя нет плагина, то и нет пункт овменю для работы с отчётом.

Крометого я просто не знаю какой плагин я напишу через месяц и какие пункты и куда ему надо будет вставить…

ЗЫ
Колян, уважаемый
Да лана, лана можно просто Колян :)


Reindeer Moss Eater   (2007-08-30 13:46:00) [51]

Убери свои секции и больше не показывай. Здесь они нафик не нужны никому.

Кто писал интефейс добавления пунктов?


Kolan   (2007-08-30 13:45:00) [52]

Наверно надо ввести понятие секций… Я все больше склоняюсь к такому решению, правда тогда при вставке

«Новый» секция 1
«Выход» секция 4
Будет:

Что-то вроде:
Новый
-
-
-
Выход


Но это в крайнем случае…


Kolan   (2007-08-30 13:43:00) [53]

> Кто его «устоял» ?

Майкрасофт, Apple ссылки надо? Или и так понятно что увидев такое меню:

Сохранить как…
-
Открыть
-
Сохранить
Выход
Новый
-

Программу тут же сотрут с винта…


> Колян, то есть если я нарисую меню н алисте бумаги и попрошу

Я смогу, но приделывать нейро сеть для вставки пунктов меню нехочется :)


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

Колян, уважаемый, "умные" разработчики пользуют для пунктов "устоявшихся" меню не "Вставить/Вынуть", а "Разрешить/Запретить"

)


Reindeer Moss Eater   (2007-08-30 13:43:00) [55]

Сейчас есть возможность послать команду вида: «Добавь пункт „Открыть“ в меню „Файл“», как указать что открыть должно быть между «Новый» и «Сохранить» если таких может не быть… хз

надо чтобы появилась новая возможность.


Kolan   (2007-08-30 13:40:00) [56]

> Куда и кому посылают ? «На деревню дедушке» что ли ?)

Почти так и есть. Посылают медиатору, а что дальше — хз(для них).


> А передать из пакета, что вставить надо перед таким-то пунктом
> или после такого-то пункта кто тебе мешает?

Мой моск мешает он не придумал как это сделать.

Сейчас есть возможность послать команду вида: «Добавь пункт „Открыть“ в меню „Файл“», как указать что открыть должно быть между «Новый» и «Сохранить» если таких может не быть… хз

И кроме того:
В меню вида:
Новый
-
Открыть
-
Сохранить
Сохранить как…
-
Выход

«Сохранить как…» между «Выход» и «Сохранить»,
а если «Сохранить» нет, то между «Открыть» и «Выход»
…


Reindeer Moss Eater   (2007-08-30 13:38:00) [57]

Колян, то есть если я нарисую меню н алисте бумаги и попрошу тебя карандашом пририсовать пункт "сохранить как" после существующего пункта "сохранить" то ты тоже ничего не сможешь сделать?


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


> там порядок уже устоялся


Кто его "устоял" ?


Reindeer Moss Eater   (2007-08-30 13:36:00) [59]

они даже незнаю вставилось там что-то или нет…

А ты расскажи "им", что люди когда-то давно придумали функции, которые возвращают результат, и результаты можно проверять после вызова функций.


Kolan   (2007-08-30 13:36:00) [60]

> а для чего это нужно? поясните пожалуйста.

Смысл прост. Есть плагины. Одним плагинам достаточно просто вставить пункт в меню «Плагины» и порядок не важен, а есть такие, которым надо вставить пункт в меню «Файл» например, а там порядок уже устоялся.

Собсо пример:
http://www.delphimaster.ru/cgi-bin/forum.pl?n=0&id=1188460255


> который должен перед вставляемым

А который должен идти перед «Выход» ?

содержать некую структуру (массив) в которой отмечать событие вставки\удаления.
Тут что-то есть рациональное, только структура жесткая не подходит…


> Уже смеяться, или еще будет солво «лопата» ?

Шото вы сёдня злой :(.


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

Наверх

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