Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-10622
rosl
2003-08-13 12:16
2003.09.04
копирован ие3


3-10638
SJ-79
2003-08-11 21:17
2003.09.04
Database Login


14-10945
SergP
2003-08-16 09:17
2003.09.04
Proxomitron. Загружаются ли gif ы полностью?


1-10792
otido
2003-08-21 18:12
2003.09.04
CAPI и перехват входящего звонка


1-10808
AndreyDm
2003-08-20 14:09
2003.09.04
Добавить содержимое буфера к Stringlist





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский