Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-2451
koks
2002-04-10 11:15
2002.05.02
QReport без DataSet - а


14-2662
Злой
2002-03-27 09:05
2002.05.02
Приветствую!!! Не подскажите как осуществить такую идею (с media в дельфях ни когда не работал) Создаю список из mp3 файлов и нужно чтобы в Label отображалось общее время в списке файлов или отдельно выбранного файла. Так вот, загрузку Mp3 предположим в L


1-2583
som
2002-04-19 16:56
2002.05.02
Edit


1-2611
SeF
2002-04-20 13:57
2002.05.02
shiftstate


14-2667
Feruza
2002-03-21 13:12
2002.05.02
Помогите начать работать с Дельфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский