Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
14-91461
Почтальён Печкин
2003-04-09 13:09
2003.04.28
Письмо счастья


1-91296
Chlavik
2003-04-17 14:36
2003.04.28
Что то лучше чем стандартный ShelltreeView ..


14-91460
Юный_программер
2003-04-09 14:16
2003.04.28
А где достать и как установить Profesional Version QuickReport-а?


14-91459
Mamai
2003-04-07 22:30
2003.04.28
Модуль


1-91264
AntonMe
2003-04-17 05:51
2003.04.28
Общие вопросы





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