Как кликнуть на раскрывшемся пункте меню
От: developer2006  
Дата: 23.09.06 10:57
Оценка:
Привет всем!
Задача следующего плана: имеем контекстное меню
item1
item2
---item21
---item22
item3
Каждый пункт имеет свой обработчик.
При наведении на пункт item2 он раскрывается, при этом вызывается OnClick. После чего на этот пункт нельзя уже нажать!!! Необходимо сделать так, что б при наведении на пункт он раскрывался, но не происходило OnClick. А при нажатии на раскрывшийся пункт вызывался соответствующий обработчик.

Любые мысли ценны. Спасибо!!!
Re: Как кликнуть на раскрывшемся пункте меню
От: Аноним  
Дата: 24.09.06 12:15
Оценка:
Здравствуйте, developer2006, Вы писали:

D>Привет всем!

D>Задача следующего плана: имеем контекстное меню
D>item1
D>item2
D>---item21
D>---item22
D>item3
D>Каждый пункт имеет свой обработчик.
D>При наведении на пункт item2 он раскрывается, при этом вызывается OnClick. После чего на этот пункт нельзя уже нажать!!! Необходимо сделать так, что б при наведении на пункт он раскрывался, но не происходило OnClick. А при нажатии на раскрывшийся пункт вызывался соответствующий обработчик.

D>Любые мысли ценны. Спасибо!!!


Мда... При расскрытии меню-контейнера вызывается не OnClick, а OnPopup вообще-то.
Re[2]: Как кликнуть на раскрывшемся пункте меню
От: developer2006  
Дата: 25.09.06 08:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, developer2006, Вы писали:


D>>Привет всем!

D>>Задача следующего плана: имеем контекстное меню
D>>item1
D>>item2
D>>---item21
D>>---item22
D>>item3
D>>Каждый пункт имеет свой обработчик.
D>>При наведении на пункт item2 он раскрывается, при этом вызывается OnClick. После чего на этот пункт нельзя уже нажать!!! Необходимо сделать так, что б при наведении на пункт он раскрывался, но не происходило OnClick. А при нажатии на раскрывшийся пункт вызывался соответствующий обработчик.

D>>Любые мысли ценны. Спасибо!!!


А>Мда... При расскрытии меню-контейнера вызывается не OnClick, а OnPopup вообще-то.

Верно! При раскрытии именно что меню-контейнера вызывается OnPopup, но задача иного характера, уже есть меню, оно уже раскрылось(прошел OnPopup), далее наводим мышкой на item2 и пункт раскрывается (вот здесь вызывается — OnClick пункта item2, причем клика самого не было, было, раскрытие которое интерпретируется как клик). Вот задача в том, что б разделить эти 2 события: OnClick что б вызывался при нажатии на пункт с подпунктами, а при наведении этот пункт просто раскрывался и все, без клика. Основная проблема в том, что если пункт раскрылся, то, сколько на нем не кликнешь, нечего не получится
Re[3]: Как кликнуть на раскрывшемся пункте меню
От: Аноним  
Дата: 25.09.06 09:52
Оценка:
Здравствуйте, developer2006, Вы писали:

D>Верно! При раскрытии именно что меню-контейнера вызывается OnPopup, но задача иного характера, уже есть меню, оно уже раскрылось(прошел OnPopup), далее наводим мышкой на item2 и пункт раскрывается (вот здесь вызывается — OnClick пункта item2, причем клика самого не было, было, раскрытие которое интерпретируется как клик). Вот задача в том, что б разделить эти 2 события: OnClick что б вызывался при нажатии на пункт с подпунктами, а при наведении этот пункт просто раскрывался и все, без клика. Основная проблема в том, что если пункт раскрылся, то, сколько на нем не кликнешь, нечего не получится


Да, блин, маразм какой-то! Не должно так работать! Приведи код, что ли... Я сам ещё попробую аналогичное сделать...
Re[4]: Как кликнуть на раскрывшемся пункте меню
От: developer2006  
Дата: 25.09.06 10:23
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Да, блин, маразм какой-то! Не должно так работать! Приведи код, что ли... Я сам ещё попробую аналогичное сделать...


вот пример на Делфи:
На форма имеем указанное меню + компонент мемо в который сбрасываются события кликов.

procedure TForm1.FormCreate(Sender: TObject);
begin
  mm_State.Clear;
  Self.PopupMenu := ppm_Main;
  mi_Item2.OnClick := ItemXXClick;
  mi_Item21.OnClick := ItemXXClick;
end;

procedure TForm1.ItemXXClick(Sender: TObject);
begin
 mm_State.Lines.Add(TMenuItem(Sender).Caption+' is clicked');
end;



В результате при клике на item21 мы имеем в мемо следующий текс:

item2 is clicked
item21 is clicked


Только не надо говорить что б я не присваивал mi_Item2.OnClick := ItemXXClick; обработчик на item2 должен быть в этом задумка
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.