-
Здравствуйте. В моем приложении есть TreeView, мне нужно его использовать как дерево чекбоксов для этого я поставил в опциях соотв. пункт. Пожалуйста подскажите, как сделать следующее: - при установке галки "родителю" автоматически ставить галочки "детям" - пробежаться по всему дереву и узнать, какие узлы отмечены галочкой - добавить картинку в некоторые узлы (не во все) - сделать отдельные хинты для каждого узла
В FAQ'е и на форуме я ничего подобного не нашёл, а в книге по KOL, на эту тему мало информации.
-
> ри установке галки "родителю" автоматически ставить галочки > "детям"
Перебором, по-моему, больше никак. Может, кто ещё способ знает
> какие узлы отмечены галочкой
TVItemSelected
> добавить картинку в некоторые узлы
TVItemSelImg\TVItemStateImg
> сделать отдельные хинты для каждого узла
Можно показывать вручную. Тут придётся плясать от TVItemAtPos. Посмотри demotreeviewdrag.7z на сайте.
-
Точно сказал =BuckLr=. Больше и сказать нечего если только код дать.
-
Посмотрел демку, там только есть добавление и удаление, а того что меня интересует там нет. Как не пытался, ничего не получается. Как я понял, картинку произвольному узлу вообще нельзя поставить :( С определением состояния галочек тоже проблема. Как не стыдно, но думаю будет лучше показать код :(
-
> там только есть добавление и удаление
Там есть пример использования TVItemAtPos. Ну как домой приду, может, напишу примерчик
-
А галочки через TVItemSelected и не ловятся. Только перебор с проверкой TVItemStateImg на 1 или 2 - не помню точно.
И картинку можно поставить отдельному узлу. Тут =BuckLr= совершенно прав.
-
> А галочки через TVItemSelected и не ловятся
Кстати!
-
=BuckLr=, так что на счёт демки. Хотелось бы посмотреть как пробежать по всему дереву и определить какие узлы отмечены галочками + как можно отметить галочкой произвользый узел?
-
Устанавливает галочки (которые картинки узлов) всех потомков узла Parent в состояние (которое индекс картинке в списке ImageList) selst
function TFF1.SetSelChild(Parent, selst: cardinal): DWORD;
var
cur: integer;
begin
result := 0;
cur := DirTreeView1.TVItemChild[Parent];
if cur = 0 then exit;
repeat
DirTreeView1.TVItemStateImg[cur] := selst;
SetSelChild(cur, selst);
cur := DirTreeView1.TVItemNext[cur];
until cur = 0;
end;
Соответственно пробежатся аналогично, а проверка, что узел выделен == проверке что у узла определенная иконка (DirTreeView1.TVItemStateImg[cur] = selst) ЗЫ Читайте "Книга о KOL"
-
Спасибо. Книгу и FAQ я читаю :)
-
как корректно через TVExpanding добавлять узлы в раскрывающийся узел ? и чтоб это срабатывало тока на не раскрытых узлах
это что то в стиле коловского dirtreeview но код перенесенный оттуда у меня не работает при включенной оптимизации !? точней внутренне работает но визуально узлы не раскрываются !?
|