Конференция "KOL" » Работа с TreeView [Delphi, Windows]
 
  • Delphuk © (04.07.07 20:11) [0]
    Здравствуйте. В моем приложении есть TreeView, мне нужно его использовать как дерево чекбоксов для этого я поставил в опциях соотв. пункт. Пожалуйста подскажите, как сделать следующее:
    - при установке галки "родителю" автоматически ставить галочки "детям"
    - пробежаться по всему дереву и узнать, какие узлы отмечены галочкой
    - добавить картинку в некоторые узлы (не во все)
    - сделать отдельные хинты для каждого узла

    В FAQ'е и на форуме я ничего подобного не нашёл, а в книге по KOL, на эту тему мало информации.
  • =BuckLr= (04.07.07 20:48) [1]

    > ри установке галки "родителю" автоматически ставить галочки
    > "детям"

    Перебором, по-моему, больше никак. Может, кто ещё способ знает


    > какие узлы отмечены галочкой

    TVItemSelected


    >  добавить картинку в некоторые узлы

    TVItemSelImg\TVItemStateImg


    >  сделать отдельные хинты для каждого узла

    Можно показывать вручную. Тут придётся плясать от TVItemAtPos. Посмотри demotreeviewdrag.7z на сайте.
  • vpbar (04.07.07 21:30) [2]
    Точно сказал =BuckLr=. Больше и сказать нечего если только код дать.
  • Delphuk © (04.07.07 23:42) [3]
    Посмотрел демку, там только есть добавление и удаление, а того что меня интересует там нет. Как не пытался, ничего не получается. Как я понял, картинку произвольному узлу вообще нельзя поставить :( С определением состояния галочек тоже проблема. Как не стыдно, но думаю будет лучше показать код :(
  • =BuckLr= (05.07.07 09:20) [4]

    > там только есть добавление и удаление

    Там есть пример использования TVItemAtPos. Ну как домой приду, может, напишу примерчик
  • Unknown Mystic © (05.07.07 10:39) [5]
    А галочки через TVItemSelected и не ловятся.
    Только перебор с проверкой TVItemStateImg на 1 или 2 - не помню точно.

    И картинку можно поставить отдельному узлу. Тут =BuckLr= совершенно прав.
  • =BuckLr= (05.07.07 13:43) [6]

    > А галочки через TVItemSelected и не ловятся

    Кстати!
  • Delphuk © (05.07.07 22:31) [7]
    =BuckLr=, так что на счёт демки. Хотелось бы посмотреть как пробежать по всему дереву и определить какие узлы отмечены галочками + как можно отметить галочкой произвользый узел?
  • vpbar (06.07.07 09:53) [8]
    Устанавливает галочки (которые картинки узлов) всех потомков узла Parent в состояние (которое индекс картинке в списке ImageList) selst

    function TFF1.SetSelChild(Parent, selst: cardinal): DWORD;
    // c- ID_TREE_NODE ss-TVItemStateImg
    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"
  • Delphuk © (06.07.07 22:39) [9]
    Спасибо. Книгу и FAQ я читаю :)
  • Robt © (13.12.07 11:07) [10]
    как корректно через TVExpanding
    добавлять узлы в раскрывающийся узел ?
    и чтоб это срабатывало тока на не раскрытых узлах

    это что то в стиле коловского dirtreeview
    но код перенесенный оттуда у меня не
    работает при включенной оптимизации !?
    точней внутренне работает но визуально узлы не раскрываются !?
 
Конференция "KOL" » Работа с TreeView [Delphi, Windows]
Есть новые Нет новых   [134431   +9][b:0][p:0.001]