Форум: "Основная";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
ВнизНужно отсортировать по возрастанию дат ветви TTreeView Найти похожие ветки
← →
Song (2002-04-19 13:29) [0]Поясню как:
Ветка1
02.12.2001 - ветвь уровня 1
03.03.2002
04.05.2000
Ветка2
Ветка3
01.01.2001 - ветвь уровня 2
02.02.2000
09.10.2001
08.05.1997
Отсортировать по возрастанию дат ветки уровней 1 и 2 в своих уровнях, не глобально по дереву а только в своих уровнях.
Ветвей в дереве может быть сколько угодно и в любых комбинациях.
Ветки с датами, точна также имеют (но могут и не иметь) свои подветви.
Постоянным остаётся только одно: даты по которым нужно отсортировать, - только в ветвях 1 и 2 уровня и занимают в тексте ветки с 1 по 8 позицию.
Буду благодарен за совет.
← →
MBo (2002-04-19 14:23) [1]function CustomSortProc(Node1, Node2: TTreeNode; Data: Integer): Integer; stdcall;
begin
Result:=0;
if (Node1.Level<2) and (Node2.Level<2) and (Node1.Parent=Node2.Parent) then
if StrToDate(Node1.Text)>StrToDate(Node2.Text) then Result:=1
else if StrToDate(Node1.Text)<StrToDate(Node2.Text) then Result:=-1;
end;
← →
Wasp (2002-04-19 14:27) [2]
function MySortFunc(lParam1, lParam2, lParamSort: Longint): Integer;
begin
Result := Round(StrToDate(TTreeNode(lParam1).Text)-StrToDate(TTreeNode(lParam1).Text));
end;
TreeView1.CustomSort(MySortFunc,0);
← →
MBo (2002-04-19 14:40) [3]у меня в 1-ом if можно выкинуть and (Node2.Level<2)
и Result:=0;
и как у Wasp вместо 2 if
Result:=Round(StrToDate(Node1.Text)-StrToDate(Node2.Text));
← →
Song (2002-04-19 15:33) [4]Спасибо. Только не понял. Извините. И как это мне использовать?
Пример вызова функции?
← →
MBo (2002-04-19 15:34) [5]function CustomSortProc(Node1, Node2: TTreeNode; Data: Integer): Integer; stdcall;
begin
Result:=0;
if (Node1.Level<2) and (Node1.Parent=Node2.Parent) then
Result:=Round( StrToDate(Node1.Text)-StrToDate(Node2.Text));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TreeView1.CustomSort(@CustomSortProc, 0);
end;
← →
Song (2002-04-19 15:40) [6]Значит здесь мы перекрываем стандратный метод сортировки класса TTreeView? Что такое CustomSort? Спрашиваю не из плохого умысла, просто не понятно.
← →
Дмитрий Баранов (2002-04-19 15:45) [7]это функция, принимающая в качестве параметра адрес другой функции, которая в свою очередь определяет порядок сортировки.
← →
MBo (2002-04-19 15:45) [8]да, для этого метод custmsort и сделан.
← →
Дмитрий Баранов (2002-04-19 15:45) [9]это функция, принимающая в качестве параметра адрес другой функции, которая в свою очередь определяет порядок сортировки.
← →
Song (2002-04-19 17:07) [10]Спасибо большое. Я и не подозревал что есть такое универсальное средство. Я уже был почти готов писать какую-нибудь рекурсию. :)
← →
MBo (2002-04-19 17:53) [11]>Song
для ListView и StringList тоже такое есть
← →
Song (2002-04-19 17:56) [12]Век живи, век учись....
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c