![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как поменять местами элементы в ListView? [D7, WinXP]
Islander © (2004-08-21 10:55:00)Здравствуйте!
Вроде бы банальный вопрос, но это не работает:
var
ListItem : TListItem;
index : integer;
begin
index := lvwData.itemindex;
ListItem := LvwData.Items [index - 1];
LvwData.Items [index - 1] := LvwData.Items [index];
LvwData.Items [index] := ListItem;
TUser (2004-08-21 20:45:00) [1]Предоагаю
ListView1.Items.Item[0].Selected:=true;
ListView1.MoveSelection(ListView1);
Первый итем перемещается в конец.
Sandman25 (2004-08-21 15:34:00) [2]Оптимальнее всего будет написать наследника, который будет использовать protected-члены и добавит пару методов в public.
olookin (2004-08-21 15:13:00) [3][10] Sandman25 © (21.08.04 15:01)
Хм. Хоть я тоже вредный, но не уверен, что мой способ оптимальней всего на свете.
Sandman25 (2004-08-21 15:01:00) [4]Хоть я и вредный, но считаю, что не стоит использовать два куска кода для решения одной задачи, поэтому все-таки твой способ лучше.
olookin (2004-08-21 14:53:00) [5][8] Sandman25 © (21.08.04 14:48)
Как ни редка, но я ее использую... Вероятно, тоже из вредности
Sandman25 (2004-08-21 14:48:00) [6]Все-таки из вредности добавлю, что операция обмена крайне редка. Даже при перетаскивании мышью :)
Sandman25 (2004-08-21 12:57:00) [7]Согласен.
olookin (2004-08-21 12:55:00) [8]to SandMan25
Когда все описанное в ветке про песенку ты делаешь на перетаскивание мышью, то Delete/Insert плохой выход.
olookin (2004-08-21 12:36:00) [9]Может быть так?
var
ListItem : TListItem;
index : integer;
begin
index := lvwData.itemindex;
ListItem := TListItem.Create(LvwData.Items);
ListItem.Assign(LvwData.Items [index - 1]);
LvwData.Items [index - 1].Assign( LvwData.Items [index]);
LvwData.Items [index].Assign(ListItem);
Sandman25 (2004-08-21 12:11:00) [10]Посмотрел исходники. Только через Delete/Insert
Sandman25 (2004-08-21 12:08:00) [11]Ну, тогда через Delete & Insert. Хотя нужно подумать, странно, что такая простая операция не поддерживается. Может, через сообщение получится.
Islander (2004-08-21 11:58:00) [12]Нет там такого :(
Sandman25 (2004-08-21 11:08:00) [13]ListItem - это ссылка.
Поищите метод Move или Exchange в типе, экземпляром которого является TListView.Items