Форум: "Основная";
Текущий архив: 2003.04.28;
Скачать: [xml.tar.bz2];
Вниз
динамическое создание подменю в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c