Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

остановить сортировку   Найти похожие ветки 

 
vasa777   (2012-05-07 23:49) [0]

есть листвиев lv1 с большим числом итемов. у него есть процедура lv1.compare, для сортировки списка. сортировка запускается как стандартная lv1.AlphaSort; все работает нормально. вопрос: как остановить сортировку, если это требуется?


 
Ega23 ©   (2012-05-08 03:21) [1]


>  как остановить сортировку, если это требуется?


Сначала вопрос: ты уверен в правильности выбора компонента? Миллион итемов - это как-то странно, зачем пользователю столько? Ну или не компонента, тогда данные как-то сгруппировать надо, структуру там древовидную. Проводник же не показывает тебе абсолютно все файлы во всех папках-подпапках и на всех дисках, когда ты на "Мой компьютер" становишься?

Теперь к сути.
Давай упростим задачу.
Есть вот такой вот код:

procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer
begin
 for i := 1 to 1000000 do
   sleep(100);
end;


Как ты видишь возможность прерывания такой процедуры?


 
Германн ©   (2012-05-08 03:30) [2]

Даже больше. Процедура от Ega23 ©   (08.05.12 03:21) [1]
дельфийская. А вот процедура ListView_SortItems, которая вызывается при сортировке листвью - процедура виндузовая. Ибо TListView всего лишь оболочка для стандартного объекта Windows.


 
Ega23 ©   (2012-05-08 03:37) [3]


>  А вот процедура ListView_SortItems, которая вызывается
> при сортировке листвью - процедура виндузовая.


Это не столь важно, вместо AlphaSort можно CustomSort вызвать, куда свою процедуру сортировки передать, с преферансом и студентками.


 
Германн ©   (2012-05-08 04:18) [4]


> Ega23 ©   (08.05.12 03:37) [3]
>
>
> >  А вот процедура ListView_SortItems, которая вызывается
> > при сортировке листвью - процедура виндузовая.
>
>
> Это не столь важно, вместо AlphaSort можно CustomSort вызвать

AlphaSort вызывает CustomSort а уж последняя вызывает недоступную нам ListView_SortItems. Я могу ошибаться в степени "недоступности".


 
Юрий Зотов ©   (2012-05-08 04:28) [5]

> сабж

Само по себе, прерывание сортировки делается элементарно - надо всего лишь возбудить исключение в обработчике OnCompare и погасить это исключение в процедуре вызова AlphaSort:

procedure TForm1.ListView1Compare(...); // Обработчик OnCompare
begin
 raise Exception.Create("Сортировка прервана")
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 try
   ListView1.AlphaSort
 except
   on E: Exception do
     ShowMessage(E.Message)
 end
end;

Но сначала стоит обратить внимание на сказанное в [1].

> Германн ©   (08.05.12 03:30) [2]
Тоже элементарно - надо возбудить исключение в callback"е.


 
vasa777   (2012-05-08 07:12) [6]

спасибо, тоже нашел про райз.
но больше понравилось Abort в онкомпаре сделать.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.074 c
15-1352393568
Stiduntss
2012-11-08 20:52
2013.03.22
Запросы к сайту


15-1331191660
iTorrent
2012-03-08 11:27
2013.03.22
Хочу сделать сайт...


2-1340180219
vasa777
2012-06-20 12:16
2013.03.22
число записей при sql запросе


3-1284928524
sas-koval
2010-09-20 00:35
2013.03.22
SQLConnection. Как узнать пароль.


2-1338895162
Сергей
2012-06-05 15:19
2013.03.22
Как закодировать проверку того что старший байт установлен?





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