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

Вниз

Как назначить 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.039 c
14-1095832509
Mrd
2004-09-22 09:55
2004.10.10
Исходник браузера


14-1095948726
Zombie
2004-09-23 18:12
2004.10.10
Хочу FM-тюнер!!!


1-1095781449
SergeyRu
2004-09-21 19:44
2004.10.10
Подключение справки от компоненты к Делфи 6


3-1094732450
frezer
2004-09-09 16:20
2004.10.10
наработки


3-1095235655
ksa2002
2004-09-15 12:07
2004.10.10
Проблема с QRDBText в QReport