Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
ВнизКак назначить PopupMenu на один из пунктов MainMenu (Срочно!!!) Найти похожие ветки
← →
lipskiy © (2004-09-23 21:22) [0]Есть PopupMenu, которое назначено на один из контролов формы. Необходимо, чтобы это же меню выпадало при выборе определенного пункта MainMenu. Создавать копию PopupMenu в MainMenu не хочется, хочется чтобы один и тот же объект был назначен как на контрол, так и на пункт MainMenu. Как это можно сделать?
Пытался при выборе пункта MainMenu сделать Insert всех строк PopupMenu, но вылетает эксепшен типа "меню вставлено дважды".
Помогите, плиз!
← →
panov © (2004-09-23 21:26) [1]>lipskiy © (23.09.04 21:22)
PopupMenu.popup
← →
jack128 © (2004-09-23 21:33) [2]lipskiy © (23.09.04 21:22)
сначала нужно удалить элементы меню из Popup с помощью метода Remove, а потом уже вставлять в MainMenu
← →
Fay © (2004-09-23 21:37) [3]
> не хочется, хочется чтобы один и тот же объект был
> назначен как на контрол, так и на пункт MainMenu. Как
> это можно сделать?
Назначьте разные. Должно помочь.
← →
lipskiy © (2004-09-23 21:50) [4]
> PopupMenu.popup
Полная ерунда. Меню не выпадает само, только после клика, и стрелки на вызывающем меню нет, говорящей о том, что у этого меню есть подменю. Да еще и координаты всплытия самому вычислять надо.
> сначала нужно удалить элементы меню из Popup с помощью
> метода Remove, а потом уже вставлять в MainMenu
Но ведь меню создано статически. Если я его удалю в рантайме, то как мне снова его создать? Придется делать и динамическое создание?
> Назначьте разные. Должно помочь.
Разные - это две копии одного меню. Это я знаю. Но это решение мне не нравится. Я должен буду всегда помнить, что при модификации этого меню в будущем мне обязательно нужно будет делать это в двух местах. Это крайне неудобно и неправильно.
← →
panov © (2004-09-23 21:57) [5]>lipskiy © (23.09.04 21:50) [4]
Полная ерунда. Меню не выпадает само, только после клика,
1. Цитирую вопрос:
Необходимо, чтобы это же меню выпадало при выборе определенного пункта MainMenu.
в [1] приведено необходимое решение.
2. У объекта не может быть 2 владельца одновременно.
Следовательно, без переноса TMenuItem из TPopupMenu в TMainMenu задача не решается.
← →
lipskiy © (2004-09-23 22:35) [6]Ну ясно же и так, что при выборе пункта MainMenu выпадать вложенные меню могут только из него. А так, чтобы выпадало просто где-то - так же никто не делает, это же не принято.
Хорошо, ясно, нужно создать пункты меню в рантайме и перекидывать их то туда то сюда...
← →
jack128 © (2004-09-23 23:16) [7]lipskiy © (23.09.04 22:35) [6]
Хорошо, ясно, нужно создать пункты меню в рантайме и перекидывать их то туда то сюда...
Не обязательно в ран тайме.
Я имел в виду что то типа этого.
На форму кидаешь попап и майн меню. В попапе рисуешь свои итемы, а mainmenu создаешь только один пункт miFile/
И пишешь вот такой код.
procedure MoveItems(Source, Dest: TMenuItem);
var
i: Integer;
mi: TMenuItem;
begin
while Source.Count > 0 do
begin
mi := Source.Items[Source.Count - 1];
Source.Delete(Source.Count - 1);
Dest.Add(mi);
end;
end;
procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
if PopupMenu1.Items.Count = 0 then
MoveItems(miFile, PopupMenu1.Items);
end;
procedure TForm1.miFileClick(Sender: TObject);
begin
if miFile.Count = 0 then
MoveItems(PopupMenu1.Items, miFile);
end;
← →
Гаврила © (2004-09-24 00:08) [8]Если уж создавать пункты меню в ран тайм, не имеет смысл их прекидывать, лучше создать две копии, используя одну процедуру. Тогла менять придется всего в одном мемте
← →
lipskiy © (2004-09-24 00:18) [9]jack128 © (23.09.04 23:16) [7]
Спасибо!!! Все рулит теперь!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.071 c