Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.12.05;
Скачать: [xml.tar.bz2];

Вниз

PopurMenu   Найти похожие ветки 

 
faiwer ©   (2010-09-11 15:30) [0]

Доброго времени суток. У меня два, наверное, простых вопроса.

1. Как можно отобразить подменю, отдельно от его родителя? К примеру у меня есть a: TPopurMenu, а в нём b: TMenuItem, в котором в свою очередь есть несколько вложенных TMenuItem. Моя задача отобразить только вложенные в b пункты меню. Это реально?

2. У меня есть подменю, в котором каждый пункт как CheckBox (выбор колонов таблице для просмотра). Хотелось бы, чтобы при нажатии на любой из пунктов, подменю не пропадало. Это реализуемо?

P.S. D2010, W7


 
faiwer ©   (2010-09-11 15:36) [1]

Думаю этот скрин поможет разъяснить ситуацию http://s53.radikal.ru/i140/1009/4b/e07ada34999b.jpg

Это длинное меню, создаваемое динамичеки, я хочу запускать не только из этого PopurMenu, но ещё и повесить на MainMenu, и на кнопку.

Что касается второго вопроса, думаю вполне очевидно, что если надо несколько колонок скрыть или показать, очень неудобно всё время мучать правую кнопку мыши :)


 
Германн ©   (2010-09-11 16:04) [2]

Просто своё окно внешне похожее на меню может помочь решить обе эти задачи.


 
faiwer ©   (2010-09-11 16:25) [3]

Угу, а есть более кошерные варианты?


 
Медвежонок Пятачок ©   (2010-09-11 17:22) [4]

все подменю - в отдельные попап меню и затем PopupMenu1.Popup(x,y);


 
Джо ©   (2010-09-11 17:32) [5]

Пишем приблизительно такую функцию:

procedure CopySubMenuItems(Source: TMenuItem; Dest: TPopupMenu);
var
 I: Integer;
 Mi: TMenuItem;
begin
 Assert (Dest <> nil, "Dest must point to existing TPopupMenu instance");

 for I := 0 to Source.Count - 1 do
 begin
   Mi := TMenuItem.Create(Dest);
   Mi.Caption := Source.Items[i].Caption;
   Mi.OnClick := Source.Items[i].OnClick;
   // В общем, копируем все нужные свойства
   Dest.Items.Add(Mi);
 end;
end;


И с ее помощью копируем пункты нужного нам подменю в отдельное TPopupMenu.


 
Германн ©   (2010-09-11 18:31) [6]

Всё равно пункт 2 в PopupMenu работать не будет. Или я что-то не понимаю?


 
faiwer ©   (2010-09-11 19:17) [7]

Похоже пункт 2 проще всего реализовать вызывая Popur(x,y) в тех же x,y, что и раньше, а затем эмулировать клик мыши в нужное подменю (ещё надо как то найти его координаты, или послать ему сигнал perform). В общем всё что ни приходит в голову на ету тему, сплошной гемморой. Похоже проще будет делать не подменю, а по нажатию на "вид", закрывать 1 контекстное меню, и тут же грузить где нидь посередине другое... Тухловато, но хоть как то )


 
Джо ©   (2010-09-12 04:39) [8]


> Германн ©   (11.09.10 18:31) [6]
> Всё равно пункт 2 в PopupMenu работать не будет. Или я что-
> то не понимаю?

Конечно, не будет :)


 
Джо ©   (2010-09-12 04:44) [9]

По п. 2 я бы сделал, как предложил Германн ©   (11.09.10 16:04) [2].
Меню с нестандартным поведением должно и выглядеть нестандартно. Меню стандартно всегда закрывается после выбора элемента. Если оно не закрывается, это и не должно выглядеть, как меню. Пусть это будет, скажем, плавающая панель.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.12.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
15-1282728977
Baks
2010-08-25 13:36
2010.12.05
Хостинг Agava.ru vs NTHost.ru


2-1284521187
03111978
2010-09-15 07:26
2010.12.05
Помогите раскрасить ComboBox


2-1284475363
Aleks
2010-09-14 18:42
2010.12.05
Привязка проги к винту


15-1282667193
Правильный$Вася
2010-08-24 20:26
2010.12.05
у кого-нибудь открывается?


2-1284403756
puding
2010-09-13 22:49
2010.12.05
popup меню





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский