Форум: "Начинающим";
Текущий архив: 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