![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с TreeView [D6, Win2k]
Voldemar © (2002-04-14 23:11:00)Доброго времени суток!
Объясните мне, плз, такую вещь:
На TreeView у меня повешено PopUpMenu и включено свойство RightClickSelect. В этом меню есть пункт "Добавить" и по этому пункту происходит, естественно, добавление элемента. Но!.. элемент добавляется к узлу, который был выделен до этого, а никак не к тому, на котором я RightClick. Как это победить? И еще вопросец заодно - как при AddChild сделать так, чтобы после создания элемент сразу был Selected?
Voldemar (2002-04-16 02:13:00) [1]Огромный TNX! Все получилось великолепно! Единственное что, когда происходит нажатие в свободной области, где нет элементов, возникает AccessViolation. Но его можно обработать.
Так что ничего кривого там нет:))
Song (2002-04-15 09:53:00) [2]Тут могут быть проблемы, так как Mouse.CursorPos показывает координаты относительно левого верхнего угла экрана, а тебе нужно относительно левого верхнего угла твоего дерева. Так что, возможно придется переводить координаты.
ScreenToClient()
Корявый немного способ, но похоже лучше ничего нет :(
SB.John (2002-04-15 09:46:00) [3]Придется пользоваться функцией GetNodeAt.
В событии OnPopup твоего всплывающего меню или при нажатии правой кнопки мыши на TreeView пропиши код типа:
TreeView1.Selected = TreeView1.GetNodeAt(Mouse.CursorPos.X,Mouse.CursorPos.Y)
Тут могут быть проблемы, так как Mouse.CursorPos показывает координаты относительно левого верхнего угла экрана, а тебе нужно относительно левого верхнего угла твоего дерева. Так что, возможно придется переводить координаты.
Song (2002-04-15 08:12:00) [4]2Voldemar © (14.04.02 23:26)
Никак. Это особенность TPopupMenu в данном случае.
Voldemar (2002-04-14 23:26:00) [5]>>Song © (14.04.02 23:21)
Это-то понятно, если выделить - все работает правильно... А вот как бы от этого уйти?
За второй совет TNX!
Song (2002-04-14 23:21:00) [6]Попробуйте сначала выделить нужный узел, и на нём нажать правую кнопку. Что касается второй части вопроса есть метод Select(), например Select(AddChild(...))