Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > popup и treeview


Автор: TaNK 8.12.2010, 11:02
Всем добрый день, неоходимо сделать следующие
есть Treeview  и popup по нажатию правой кнопки на узлах - всплывает меню, вот в  этом момент нужно запретить все действий кроме как нажатие на вслывшее меню popup, 
или другой вариант нужен - как определить что нажали именно всплывающее окно.
как реализовать..

Автор: oldcode 9.12.2010, 08:37
Код
if (PopupMenu->Popup)

Автор: TaNK 9.12.2010, 08:59
oldcode  - Вы проверяли свой код?

Автор: mrbrooks 9.12.2010, 09:10
Цитата(TaNK @  8.12.2010,  11:02 Найти цитируемый пост)
есть Treeview  и popup по нажатию правой кнопки на узлах - всплывает меню, вот в  этом момент нужно запретить все действий кроме как нажатие на вслывшее меню popup


у TPoputMenu есть событие OnPopup - оно срабатывает при вызове самого меню. В его обработчике можешь например написать
treeView->Enabled = false;
при нажатии кнопки меню соответственно treeView->Enabled = true;

Автор: A5uKa 9.12.2010, 09:17
Цитата(mrbrooks @ 9.12.2010,  09:10)
Цитата(TaNK @  8.12.2010,  11:02 Найти цитируемый пост)
есть Treeview  и popup по нажатию правой кнопки на узлах - всплывает меню, вот в  этом момент нужно запретить все действий кроме как нажатие на вслывшее меню popup


у TPoputMenu есть событие OnPopup - оно срабатывает при вызове самого меню. В его обработчике можешь например написать
treeView->Enabled = false;
при нажатии кнопки меню соответственно treeView->Enabled = true;

А как он потом будет обратно её в доступ открывать ? 

Автор: mrbrooks 9.12.2010, 09:18
Цитата(A5uKa @  9.12.2010,  09:17 Найти цитируемый пост)
А как он потом будет обратно её в доступ открывать ?  


Цитата(mrbrooks @  9.12.2010,  09:10 Найти цитируемый пост)
при нажатии кнопки меню соответственно treeView->Enabled = true; 


Автор: A5uKa 9.12.2010, 09:23
а если он её не надмёт ?  smile

Добавлено через 10 секунд
*не нажмёт

Автор: oldcode 9.12.2010, 11:29
Цитата(TaNK @ 9.12.2010,  08:59)
проверяли свой код?

это и было про OnPopup , а Вы, кажись, поняли дословно :(

Автор: TaNK 9.12.2010, 12:00
сделал таким образом - 
Код

//вывел меню 
PMenu->Popup(Mouse->CursorPos.x,Mouse->CursorPos.y);


а все что нужно при нажати на это меню в onClick вставил и все.
проверка на нажатие меню не потребовалась

Автор: A5uKa 9.12.2010, 12:47
Цитата(TaNK @ 9.12.2010,  12:00)
сделал таким образом - 
Код

//вывел меню 
PMenu->Popup(Mouse->CursorPos.x,Mouse->CursorPos.y);


а все что нужно при нажати на это меню в onClick вставил и все.
проверка на нажатие меню не потребовалась

Можешь удовлетворить мой интерес - зачем это надо было.

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

Так зачем блокировать ?

Автор: TaNK 9.12.2010, 12:50
A5uKa  - да я сам перемудрил - после отображения меню нужно было код запихнуть в onClick, а я код создания Формы написал сразу после 
Код

PMenu->Popup(Mouse->CursorPos.x,Mouse->CursorPos.y);

так что блокирование совсем не нужно тут.

Автор: TaNK 24.1.2011, 17:44
возник еще вопросик - если есть родительский узел и у него несколько child то когда я пишу вот так 
Код

TreeV->Select(TreeV->Items->Item[0]);
TreeV->SetFocus();

он становится на этот родительский узел, но и скрывает все своих child, 
Код

TreeV->Items->Item[0]->Expended(true);


расскрывает все узлы дерева, подскажите как стать на родителя без сокрытия child;

Автор: A5uKa 25.1.2011, 09:11
Цитата(TaNK @ 24.1.2011,  17:44)
Код

TreeV->Items->Item[0]->Expended(true);


расскрывает все узлы дерева, подскажите как стать на родителя без сокрытия child;

Странно, ну может у остальных Expended(false) поставить ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)