![]() |
|
#1
|
|||
|
|||
![]() Вобщем появился вопрос.
Есть treeview, в него тащатся данные из БД(у меня видимо из-за этого ошибка, хотя это не важно я думаю). Пусть мы наоткрывали этот treeview до какого-то уровня и выделили какой-то node. Я хочу чтоб при нажатии на кнопку остался только прямой путь к этому nod'у а все остальные вложения на относящиеся конкретно к пути к этому ноду закрылись. Т.е. пусть мы сделали fullexpand и открыли весь treeview, затем выделили какой-то нод в какой-то ветке и при нажатии на кнопку оставался только путь к этому ноду, а все остальное закрылось. Может кто знает решение? |
#2
|
|||
|
|||
![]() Как вариант - частичное решение (как сделать expand только для "полного" пути). Но как скрыть все ненужные узлы "выше" и "ниже" - с ходу не знаю.
Код:
|
#3
|
|||
|
|||
![]() Спасибо.
Код:
Цитата:
|
#4
|
|||
|
|||
![]() Цитата:
Может быть здесь : Код:
Если aNode = NIL, то обращение aNode.Parent может быть не корректным |
#5
|
|||
|
|||
![]() Это вроде как и эквивалентно
Код:
|
#6
|
|||
|
|||
![]() Суть в том, что многое завист от логики компилятора.
Если компилятор "будет удовлетворен" результатом проверки : Assigned(aNode) для aNode=nil, то "все в порядке" А если "пойдет дальше" и проверит вторую часть условия : Assigned(aNode.Parent) при aNode=nil, то может быть RunTime-ошибка. Честно сказать, я не знаю логику "нынешних" компиляторов Delphi. Но в старых версиях такой конфуз случался. Поэтому стараюсь (на всякий случай) исключать такие потенциально опасные места на уровне исходников. |