![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сортировка в ListBox с сохранением старого ItemIndex [D5, WinXP]
lost3000 © (2004-12-22 11:33:00)Господа, подскажите, пожалуйста, по проблеме...
Из файла закачиваю в ListBox строки. При включении Sorted меняется ItemIndex строк. Возможно ли его сохранить изначальным?
lost3000 (2004-12-22 13:25:00) [1]Спасибо всем!
Alexander Panov (2004-12-22 13:18:00) [2]lost3000 (22.12.04 11:33)
Быстрее будет при заполнении TListBox заполнить уникальными значениями ListBox.Items.Objects и после сортировки вести поиск по этому полю.
Перед сортировкой(или раньше):
for i := 0 to ListBox.Count-1
do ListBox.Items.Objects[i] := Pointer(i);
var
p: Ponter;
i: Integer;
begin
p := ListBox.Items.Objects[ListBox.ItemIndex];
... //Сортировка
После сортировки:
for i := 0 to ListBox.Count-1 do
begin
if ListBox.Items.Objects[i]=p then
begin
ListBox.ItemIndex := i;
break;
end;
end;
antonn (2004-12-22 13:09:00) [3]
> Александр Иванов © (22.12.04 12:48) [11]
ну, собственно, и все... Под условие вопроса ответ не проходит.
Александр Иванов (2004-12-22 12:48:00) [4]antonn © (22.12.04 12:32) [10]
Ну попадутся, и что?
antonn (2004-12-22 12:32:00) [5]lost3000 (22.12.04 11:33)
вставляй объекты, а то попадуться 2 одинаковых строки...
lost3000 (2004-12-22 12:19:00) [6]Понял. Спасибо, Александр!
Александр Иванов (2004-12-22 12:15:00) [7]А зачем еще варианты, ведь даже если имеются одинаковые строки неважно какая из них станет текущей. Конечно за исключением случаев, когда к ним "привязана" какая-то дополнительная информация, но тогда и поиск следует осуществлять по этой информации.
var buf:string;i:integer;
begin
buf:=ListBox1.Items[ListBox1.ItemIndex];
ListBox1.Sorted:=True;
i:=0;
while buf <> ListBox1.Items[i] do inc(i);
ListBox1.ItemIndex:=i;
end;
lost3000 (2004-12-22 12:11:00) [8]Александру : Поиск, опять же, по содержанию строки? Или есть ещё варианты?
lost3000 (2004-12-22 12:09:00) [9]Спасибо.
Александр Иванов (2004-12-22 12:06:00) [10]Поиск, после сортировки.
Плохиш (2004-12-22 11:57:00) [11]Запомнить содержимое этой строки до сортировки и найти её после
lost3000 (2004-12-22 11:55:00) [12]Некорректность вопроса понял.
Тогда следующий.
Каким образом можно после сортировки опознать строку, которая изначально была первая, а стала, к примеру, пятая?
lost3000 (2004-12-22 11:54:00) [13]Некорректность вопроса понял.
Тогда следующий.
Каким образом можно после сортировки опознать строку, которая изначально была первая, а стала, к примеру, пятая?
Плохиш (2004-12-22 11:44:00) [14]ItemIndex - в переводе, "порядковый номер элемента в списке"
Следующий вопрос?