Virtual Tree View - таки

  • Автор темы NetDigger
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

NetDigger

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

Barmutik

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

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

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

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


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

end;
А это собвственно обработчки сравнения ... сортируем в зависимости от значений в колонках:
Код:
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;
 
N

NetDigger

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

Barmutik

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