Virtual Tree View - таки

Тема в разделе "Delphi - Компоненты", создана пользователем NetDigger, 7 дек 2004.

Статус темы:
Закрыта.
  1. NetDigger

    NetDigger Гость

    Здравствуйте, уважаемые и лично Barmutik!
    Все-таки руки, наконец, дошли до замечательного компонента VisualStringTree. Сначала траблы были (да и сейчас остаются). Абсолютно непривычно было работать с указанием текста нода через указатели (стыдно сказать пока разобрался как сделать ноду определленный текст - прошло 6 часов =))) И все-таки проблемки пока остаются - не совсем разобрался как сделать сортировку колонки - вроде все это делается автоматом при вызове соответствующей функции - ан нет, не получается, добился только смены глифов =) А так - пока все хорошо, разбираюсь. Уважаемые, может кто встречал русскую документацию или примеры использования с комментариями. Спасибо
     
  2. Barmutik

    Barmutik Гость

    :huh: Не стоило столько тратить времени... стоило просто спросить.. :)

    Я сразу тоже пальцем в небо попадал но потом у меня 80% вопросов у самого отпало после просмотров примеров поставляемых вместе с контролом + отдельно можно скачать хелп(прям на сайте).. который поможет решить 10% вопросов .. ну а оставшиеся 10% .. это чисто личное набивание шишек...

    Я в 90% случаях использую VietualTree именно как виртуальный контрол .. т.е. данные в нём самом не храняться.. а запрашиваются у моего источника данных.. следовательно и проводить сортировку я должен в своём источнике данных а изменения почти автоматически отобразятся в контроле.

    Если же данные храняться в элементах контрола то поступить можно следующим образом:


    Это инициирует сортировку по выбранному столбцу и в навправлении нам нужном:
    Код (Text):
    XXX.TreeHeaderClick(Sender: TVTHeader;
    Column: TColumnIndex; Button: TMouseButton; Shift: TShiftState; X,
    Y: Integer);
    begin
    ...
    TasksTree.SortTree(Column, SortDirection, False)

    end;
    А это собвственно обработчки сравнения ... сортируем в зависимости от значений в колонках:
    Код (Text):
    XXX.TreeCompareNodes(Sender: TBaseVirtualTree;
    Node1, Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer);
    var
    NodeData1: PXXXData;
    NodeData2: PXXXData;
    begin
    NodeData1 := Sender.GetNodeData(Node1);
    NodeData2 := Sender.GetNodeData(Node2);
    case Column of
     0: Result := CompareValue(XXX, XXX);
     1: Result := AnsiCompareText(XXX, XXX);
    ...
     X: Result := CompareDateTime(XXX, XXX);
    end;
    end;
     
  3. NetDigger

    NetDigger Гость

    Большое спасибо - уже разобрался =) Набивание шишек - порой, тоже дело полезное :)
     
  4. Barmutik

    Barmutik Гость

    Однозачно полезное .. просто иногда когда оно идёт слишком болезненно .. всё таки имеет смысл спросить.. :rolleyes:
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей