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