Форум: "Основная";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
ВнизВопрос по ListView? Найти похожие ветки
← →
isma (2003-08-20 12:13) [0]Здравствуйте, мне нужна помощь знающих людей. ListView разбит на 3 колонки, в первую колонку заноситься время, во вторую дата.
Вопрос, как отсортировать автоматически этот список. Не нажимая на Columns. Я новичок просьба помогите если кто знает, если можно примерчик тоже.
С уважением.
← →
Digitman (2003-08-20 12:19) [1]так ты сразу в отсортированном виде и заноси !
← →
isma (2003-08-20 12:32) [2]Мне нужно бывает добавлять или редактировать и в этот момент
чтобы сработала автосортировка
← →
Digitman (2003-08-20 12:36) [3]
> и в этот момент
> чтобы сработала автосортировка
посмотри в хэлпе описание метода TListView.CustomSort() и события TListView.OnCompare. Это то что тебе нужно.
← →
isma (2003-08-20 12:44) [4]Я имею в виду сразу после добавления сроки или после редактирования.
← →
isma (2003-08-20 13:01) [5]Ась?
← →
Digitman (2003-08-20 13:03) [6]
> сразу после добавления сроки или после редактирования
вот сразу после этого и вызывай CustomSort()
← →
isma (2003-08-20 14:13) [7]Использовал CustomSort() но она сортирует по первой колонке, а мне нужно чтоб сортировала по двум колонкам сразу
← →
mOOx_ (2003-08-20 14:15) [8]А ручками, например, пузырек :), тебе не катит?
← →
isma (2003-08-20 14:26) [9]Ручками не устраивает надо чтоб автоматом.
Кто-нибудь даст дельный совет? али как?
← →
Digitman (2003-08-20 14:26) [10]вот это вот в хэлпе для кого писано ?
Call CustomSort to sort the items in the list using the ordering function defined by the SortProc parameter. The SortProc parameter specifies an ordering function that compares the list items passed as lParam1 and lParam2. The ordering function returns an integer that indicates whether lParam1 is the same as lParam2 (return value is 0), lParam1 is greater than lParam2 (return value is greater than 0), or lParam1 is less than lParam2 (return value is less than 0). The lParam parameter of CustomSort is an optional value that is passed as the third parameter to the ordering function.
If the SortProc parameter is nil, CustomSort compares the list items by generating an OnCompare event. This allows the OnCompare event handler to provide different ordering criteria (such as ascending vs. descending order), based on the value of the lParam parameter.
If the ordering function is not provided and there is no OnCompare event handler, CustomSort sorts items alphabetically by their Caption values.
CustomSort returns True if the list is successfully sorted.
Черным же по белому : если ни функция сравнения не указана параметром в CustomSort(), ни обработчик события OnCompare() не установлен (в котором делается то же самое, что и в ф-ции сравнения), метод сортирует элементы в алф.порядке по значениям их свойств Caption. Т.е., по 1-й колонке.
← →
isma (2003-08-20 14:36) [11]Уважаемый Digiman!
В хелпе, я как понял написано, что CustomSort()< сортирует элементы в алф.порядке по значениям их свойств Caption. Т.е., по 1-й колонке.>
А мне надо по двум колонкам сразу.
Извини может я что-то не так понимаю, объясни пожалуйста.
← →
Digitman (2003-08-20 14:53) [12]нет, ты ,наверно, читать еще не научился)
ты понимаешь, что такое IF (если) ?
еще раз повторяю - ЕСЛИ (!!!!!!) ты вызываешь CustomSort() с первым параметром, равным nil, и в этот момент не установлен обработчик события OnCompare(), ТО сортировка будет произведена по св-ву Caption, т.е. по 1-му столбцу.
ИНАЧЕ (!!!!!!) (т.е., или первый параметр метода CustomSort() указывает на твою собственную процедуру сравнения эл-тов списка или то же самое, т.е. твое собственное сравнение эл-тов, делается в назначенном обработчике события OnCompare) сортировка будет происходить в соответствии с конкретной логикой, определенной тобой самим, а не по умолчанию.
Что такое сортировка в дан.случае ? Это изменение местоположений элементов списка для достижения их упорядоченности по определенному критерию. Менять местами эл-ты компонент будет сам, от тебя лишь достаточно в процедуре сравнения сказать компоненту, "больше" такой-то элемент другого, меньше или они равны. Всякий раз, когда компонент в ходе такой сортировки будет принимать решение о необходимости поменять местами какие-то два очередных элемента из списка, он вызовет либо указанную тобой процедуру сравнения либо обработчик события OnCompare(), спрашивая тебя тем самым : вот ссылки на элементы Item1 и Item2,
если Item1 > Item2 (Item1 д.б. выше по отсортированному списку, чем Item2) - верни 1,
если меньше (ниже по списку) - верни -1,
если равны - верни 0
твоя задача - реализовать логику сравнения 2-х элементов, к примеру, в обработчике события OnCompare() и вызвать CustomSort(nil, ..). Все остальное компонент сделает сам.
← →
Digitman (2003-08-20 14:54) [13]нет, ты ,наверно, читать еще не научился)
ты понимаешь, что такое IF (если) ?
еще раз повторяю - ЕСЛИ (!!!!!!) ты вызываешь CustomSort() с первым параметром, равным nil, и в этот момент не установлен обработчик события OnCompare(), ТО сортировка будет произведена по св-ву Caption, т.е. по 1-му столбцу.
ИНАЧЕ (!!!!!!) (т.е., или первый параметр метода CustomSort() указывает на твою собственную процедуру сравнения эл-тов списка или то же самое, т.е. твое собственное сравнение эл-тов, делается в назначенном обработчике события OnCompare) сортировка будет происходить в соответствии с конкретной логикой, определенной тобой самим, а не по умолчанию.
Что такое сортировка в дан.случае ? Это изменение местоположений элементов списка для достижения их упорядоченности по определенному критерию. Менять местами эл-ты компонент будет сам, от тебя лишь достаточно в процедуре сравнения сказать компоненту, "больше" такой-то элемент другого, меньше или они равны. Всякий раз, когда компонент в ходе такой сортировки будет принимать решение о необходимости поменять местами какие-то два очередных элемента из списка, он вызовет либо указанную тобой процедуру сравнения либо обработчик события OnCompare(), спрашивая тебя тем самым : вот ссылки на элементы Item1 и Item2,
если Item1 > Item2 (Item1 д.б. выше по отсортированному списку, чем Item2) - верни 1,
если меньше (ниже по списку) - верни -1,
если равны - верни 0
твоя задача - реализовать логику сравнения 2-х элементов, к примеру, в обработчике события OnCompare() и вызвать CustomSort(nil, ..). Все остальное компонент сделает сам.
← →
isma (2003-08-20 14:58) [14]Спасибо, DigiMan!
Все понял. Спасибо, что объяснил.
С уважением.
← →
Digitman (2003-08-20 15:03) [15]пардон, заговорился уже)
с точностью до наоборот :
если вернешь 1, то Item1 будет ниже по списку чем Item2
если -1, то - наоборот
если 0, по элементы местами меняться не будут (равноценны с т.з. сортировочного сравнения)
← →
mOOx_ (2003-08-20 15:05) [16]Ну надо же, век живи. век учись :). Просветил, сенкс.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.01 c