Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-1095000158
Alex870
2004-09-12 18:42
2004.10.10
Видео в БД


3-1094733630
Алексей
2004-09-09 16:40
2004.10.10
ADO,FOX: файл уже используется???


14-1095843783
miwa
2004-09-22 13:03
2004.10.10
Подскажите, что это за песня? Лет пять назад, вроде, была


1-1095591213
Чувак
2004-09-19 14:53
2004.10.10
Что такое stdcall и с чем его едят?


4-1094432292
js
2004-09-06 04:58
2004.10.10
Вызов диалога "Выбор: Пользователь, Группа или Компьютер"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский