powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как организовать контекстное меню в TreeView?
5 сообщений из 30, страница 2 из 2
Как организовать контекстное меню в TreeView?
    #33236351
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolmyrАга, HitTest вставил. Все вроде работает.
Только вот если нажать на один узел правой, а потом на другой тоже правой, не убирая меню от предыдущего нажатия, то фильтрация в гриде справа происходит не всегда, хотя передвижение в таблице каталогов, по которой фильтрация идет, происходит, я отсмотрел. И обновление грида стоит.
Или это правильно?
Правильно. Дело тут в следующем.

Видимо у тебя, как и положено, обновление Grid происходит в событии NodeClick. Но, как я уже заметил выше, событие MouseDown происходит ДО события NodeClick. Более того, в зависимости от обработки, событие NodeClick может вообще не произойти.

Чтобы это обойти, надо первой командой в MouseDown сделать принудительное присвоение:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
*** ActiveX Control Event ***
LPARAMETERS button, shift, x, y
* Это для особо нетерпеливых. В принципе, будет работать и без него.
* Но в таком случае, чтобы выбрать узел, который Вы собираетесь перенести, необходимо
* будет четко нажать и отпустить левую клавишу мыши
LOCAL loNode
loNode=This.HitTest(x*This.nTwipX, y*This.nTwipY)
IF IsNull(m.loNode)=.F. AND m.loNode.Selected=.F.
	m.loNode.Selected=.T.
ENDIF
* Далее уже собственно вызов меню

Здесь This.nTwipX и This.nTwipY - это мои свойства, которые я ввел в TreeView для перевода пикселей в твипы

Правда, в этом случае возможно срабатываение события NodeClick дважды. Но не думаю, что это будет такая уж большая проблема.
...
Рейтинг: 0 / 0
Как организовать контекстное меню в TreeView?
    #33236391
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolmyrДа, и еще.
Как сделать, чтобы при открытии формы корневой каталог разворачивался на один уровень?
У меня в Init TreeView стоит:
THIS.Expand(THIS.Nodes(1)).
И ни фига он не разворачивается. Наверно опять что-то не так сделал?
Ты делаешь распространенную ошибку, считая, что узел с индексом 1 - это корневой узел дерева. В общем случае это не всегда так. Т.е. надо определять корневой узел следующим образом

This.Nodes(1).Root

Для раскрытия узла дерева необходимо не вызывать событие, а изменить состояние, которое вызывает это событие. В данном случае - свойство Expanded

This.Nodes(1).Root.Exapnded = .T.

Кроме того, при работе с ActiveX обязательно надо делать глобальную настройку

_VFP.AutoYield = .F.
...
Рейтинг: 0 / 0
Как организовать контекстное меню в TreeView?
    #33236804
Solmyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем. Все заработало.
to ВладимирМ.
Друг мой, эту команду можно включить в Main.prg прямо в таком виде, как вы написали?
...
Рейтинг: 0 / 0
Как организовать контекстное меню в TreeView?
    #33236928
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Solmyrto ВладимирМ.
Друг мой, эту команду можно включить в Main.prg прямо в таком виде, как вы написали?
Имеется в виду

_VFP.AutoYield = .F.

Да. Это глобальная настройка. Не зависит от Private DataSession. Можно назначить один раз при открытии проги.
...
Рейтинг: 0 / 0
Как организовать контекстное меню в TreeView?
    #33237378
Solmyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз спасибо всем. Таки не знаю, что бы я без вас делал ...
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как организовать контекстное меню в TreeView?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]