Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
ВнизСортировка в ListBox с сохранением старого ItemIndex Найти похожие ветки
← →
lost3000 (2004-12-22 11:33) [0]Господа, подскажите, пожалуйста, по проблеме...
Из файла закачиваю в ListBox строки. При включении Sorted меняется ItemIndex строк. Возможно ли его сохранить изначальным?
← →
Плохиш © (2004-12-22 11:44) [1]ItemIndex - в переводе, "порядковый номер элемента в списке"
Следующий вопрос?
← →
lost3000 (2004-12-22 11:54) [2]Некорректность вопроса понял.
Тогда следующий.
Каким образом можно после сортировки опознать строку, которая изначально была первая, а стала, к примеру, пятая?
← →
lost3000 (2004-12-22 11:55) [3]Некорректность вопроса понял.
Тогда следующий.
Каким образом можно после сортировки опознать строку, которая изначально была первая, а стала, к примеру, пятая?
← →
Плохиш © (2004-12-22 11:57) [4]Запомнить содержимое этой строки до сортировки и найти её после
← →
Александр Иванов © (2004-12-22 12:06) [5]Поиск, после сортировки.
← →
lost3000 (2004-12-22 12:09) [6]Спасибо.
← →
lost3000 (2004-12-22 12:11) [7]Александру : Поиск, опять же, по содержанию строки? Или есть ещё варианты?
← →
Александр Иванов © (2004-12-22 12:15) [8]А зачем еще варианты, ведь даже если имеются одинаковые строки неважно какая из них станет текущей. Конечно за исключением случаев, когда к ним "привязана" какая-то дополнительная информация, но тогда и поиск следует осуществлять по этой информации.
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:19) [9]Понял. Спасибо, Александр!
← →
antonn © (2004-12-22 12:32) [10]lost3000 (22.12.04 11:33)
вставляй объекты, а то попадуться 2 одинаковых строки...
← →
Александр Иванов © (2004-12-22 12:48) [11]antonn © (22.12.04 12:32) [10]
Ну попадутся, и что?
← →
antonn © (2004-12-22 13:09) [12]
> Александр Иванов © (22.12.04 12:48) [11]
ну, собственно, и все... Под условие вопроса ответ не проходит.
← →
Alexander Panov © (2004-12-22 13:18) [13]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;
← →
lost3000 (2004-12-22 13:25) [14]Спасибо всем!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c