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

Вниз

динамическое создание подменю в PopupMenu   Найти похожие ветки 

 
Desdechado ©   (2003-04-15 14:09) [0]

Нужно, чтобы при наведении на один из пунктов PopupMenu заполнялся список его подменю. Но ТОЛЬКО при наведении, поскольку заполнение может быть достаточно долгим (обращение к БД). Поэтому при показе PopupMenu не хочется сразу вычитывать вложенные пункты.

Почему-то получается только в таком хитром случае, когда уже есть одно заранее определенное подменю - только после его открытия происходит перерисовка всего меню и видно появление новых подпунктов.

Куда копать? Похоже, просто требуется принудительная перерисовка popupmenu, но как?


 
Desdechado ©   (2003-04-15 15:31) [1]

up


 
Desdechado ©   (2003-04-15 17:12) [2]

неужто никто не знает?


 
AlexSV ©   (2003-04-15 17:15) [3]

Все прозрачно - ошибка в 17 строке


 
Desdechado ©   (2003-04-15 17:47) [4]

2 AlexSV ©
умничать только не надо. не знаешь - не пиши.
если что-то не ясно, задавай наводящие вопросы.


 
AlexSV ©   (2003-04-15 17:57) [5]

Да я вообщем и не собирался умничать.
У меня тоже работает меню из базы с динамическим созданием и обновлением. Отвечает за это отдельный класс.
А насчет наводящих вопросов:
1. где и как создается?
2. где и как заполняется?
3. где и как показывается?

Для начала хватит?


 
Desdechado ©   (2003-04-15 18:05) [6]

1. popup лежит на форме
2. корень меню заполнен статически, а вот динамически нужно подчитывать только подменю и только при наведении на определенный пункт
3. просто по правой кнопке - стандарт без изысков

Весь фокус именно с подменю. Старая инфа в нем вытирается перед показрм, а новая должна генериться в зависимости от того, куда кликнули, но не всегда (см. выше)


 
AlexSV ©   (2003-04-15 19:52) [7]

Вообщем тема такая (если я все правильно понял):
Item у PopupMenu может выступать в двух вариантах
1. исполняемый - событие OnClick происходит только по нажатию кнопки
2. подменю - событие OnClick происходит по наведению мыши на item с задержкой.

Рекомендации: для определенного пункта держи один созданный item в режиме Visible := False, иначе при вытирании старой инфы (уничтожении всех subitem"ов) ты переводиш его в режим 1, т.е. п.1 см. выше

Если этого не достаточно, то продолжим завтра.


 
Desdechado ©   (2003-04-15 20:36) [8]

спасибо, попробую


 
Babay ©   (2003-04-16 06:30) [9]

вот примерчик простой

procedure TForm1.PopupMenu1Popup(Sender: TObject);
Var it:TMenuitem;
i:Integer;
begin
// очищаем старые пункты
while PopupMenu1.Items.Items[0].Count>0 do
PopupMenu1.Items.Items[0].Items[0].Free;
// создаем новые
for i:=1 to 4 do begin
It:=TMenuItem.Create(self);
it.Caption:=Inttostr(Random(1000));
....// задаем остальные параметры
PopupMenu1.Items.Items[0].add(it);
it:=nil;
end;
end;



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

Текущий архив: 2003.04.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
1-91375
Сергей Ч
2003-04-16 12:49
2003.04.28
Работа с окнами


4-91599
shu_3d
2003-03-03 14:56
2003.04.28
Размеры шрифтов


14-91476
Agent[007]
2003-04-08 13:34
2003.04.28
HTML


8-91410
pavel_ak
2003-01-24 20:46
2003.04.28
Что-нибудь типа кнопок в DelphiX


7-91567
DJ_Sedoy
2002-12-31 01:29
2003.04.28
Скрыть программу от Ctrl-Alt-Del в XP