delphi treeview



Delphi checkbox treeview

Автор рома савицкий задал вопрос в разделе Другие языки и технологии

treeview в Delphi очень сложно, помогите и получил лучший ответ

Ответ от ...[гуру]
Да вообщем-то не особо сложно. Набросал на Lazarus, соотв. что-то похожее должно работать в Delphi
Положили на форму TTreeView, и CheckBox (соотв. TreeView1 и CheckBox1)
Добавим элементы в TTreeView Узел Item0, у него под-узлы Item0-0, Item0-1 и узел Item1 с под-узлами Item1-0 и Item 1-1
Воспользуемся свойством узла StateIndex. Будем запрещать разворачивать, если этот StateIndex=1. Соотв. у Item1 установим его = 1 и свернем узел.
Привяжемся к обработчику TreeView OnExpanding (срабатывает, когда узел пытается раскрыться. В нём
If Node.StateIndex = 1 then AllowExpansion := false;
Берем CheckBox1 и привязываемся к событию OnChange в нём:
(можно изящнее сделать, но так думаю просто понятнее будет).
var
Item : TTreeNode;
begin
Item := TreeView1.Items[3];
if CheckBox1.Checked then
begin
Item.StateIndex := 0;
Item.Expanded := true;
end else
begin
Item.StateIndex := 1;
Item.Expanded := false;
end;
Соотв. при включенном CheckBox1 узел Item1 становится "доступным" и разворачивается и наоборот. Дольше писать, чем делать.
Обратите внимание на индекс 3. 3 это узел Item1 (учитывая, что Item0+Item0-0+Item0-1 т. е. все узлы, включая под-узлы до него).
На всякий случай скрины (кликабельны):
delphi treeviewdelphi treeview
...
Просветленный
(43939)
Так тут пример как раз как такое сделать. Я-ж не знаю точно что за тест и к чему привязаться. Естественно вместо CheckBox надо привязаться к событию, где будет проверка на правильность и сделать то-же самое как у меня - включить StateIndex раскрыть узел.

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: treeview в Delphi очень сложно, помогите
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*