TreeView
Eсть TreeView, которое используется как менюшка (по типу опций в WinAmp'e).
Оно (дерево) периодически обновляется (перерисовывается) полностью т.к. является еще и рекатируемым списком.
История проблемы
При обновлении дерева пропадает выделение элемента (что понятно). А вот выделить его опять у меня не получается.
Как к нему обратится - не знаю.
Я пробовал по-разному, и получается какая-то фигня - то все нормально, а после пары обновлений другие эл-ты начинают выделятся, то просто другие выделяются...
Как быть?
История жизни
Eсть TreeView, которое используется как менюшка (по типу опций в WinAmp'e).
Оно (дерево) периодически обновляется (перерисовывается) полностью т.к. является еще и рекатируемым списком.
История проблемы
При обновлении дерева пропадает выделение элемента (что понятно). А вот выделить его опять у меня не получается.
Как к нему обратится - не знаю.
Я пробовал по-разному, и получается какая-то фигня - то все нормально, а после пары обновлений другие эл-ты начинают выделятся, то просто другие выделяются...
Как быть?
Я так понимаю, ты выделение делаешь по Index, а после обновления, наверно этот Index меняется. Если так, то либо ищи нужный узел по Text (если у них уникальные названия). Или для каждого узла в свойстве Data храни какой-нить уникальный ID, по которому потом и восстанавливай выделение.
При обновлении дерева пропадает выделение элемента (что понятно). А вот выделить его опять у меня не получается.
Как к нему обратится - не знаю.
Я пробовал по-разному, и получается какая-то фигня - то все нормально, а после пары обновлений другие эл-ты начинают выделятся, то просто другие выделяются...
Как быть?
Заведи переменную типа TTreeNode, например, ActiveNode.
В обработчике OnChange заноси в эту переменную значение параметра Node.
После обновления дерева делай TreeView1.Selected := ActiveNode.
Заведи переменную типа TTreeNode, например, ActiveNode.
В обработчике OnChange заноси в эту переменную значение параметра Node.
После обновления дерева делай TreeView1.Selected := ActiveNode.
Я вот так и делал - даже переменную так же назвал :}
Но, дело, в том, что у меня как раз надо выделить тот узел, у которого имя меняется.
А когда так делаю - фигня выходит.
А как выделить по индексу (т.е. по номеру)?
Я вот так и делал - даже переменную так же назвал :}
Но, дело, в том, что у меня как раз надо выделить тот узел, у которого имя меняется.
А когда так делаю - фигня выходит.
А как выделить по индексу (т.е. по номеру)?
По индексу(если индекс не меняется)
TreeView1.Selected := TreeView1.Items.Item[index];
По индексу(если индекс не меняется)
TreeView1.Selected := TreeView1.Items.Item[index];
Спасибо, все получилось!
Сам бы никогда не догадался - уж больно через rectum :)