![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как изменить позицию элемена в TListView [D7, Win95/98, WinXP]
Zoidberg © (2006-01-07 14:55:00)Как можно изменить позицию элемента (строки) в TListView не используя сортировку?
Lamer@fools.ua (2006-01-09 16:04:00) [1]
procedure TForm1.Button1Click(Sender: TObject);
var
LI: TListItem;
begin
if ListView1.Selected = nil then
Exit;
LI := ListView1.Items.Insert(0);
LI.Assign(ListView1.Selected);
ListView1.Items.Delete(ListView1.Selected.Index);
end;
?
Zoidberg (2006-01-09 15:50:00) [2]Спасбо, но это все равно не помогло.
Сначала вообще ничего не менялось, пока не изменил
Target := listview.Items.Insert(ItemTo);
на
Target := listview.Items.Insert(ItemTo + 1);
Потом все вроде заработала, но после нескольких таких переносов, программа вываливалась с ошибкой... Причину мне найти не удалось, решил все бросить, и сделать все же через сортировку.
raidan (2006-01-07 19:15:00) [3]TListView - это динамический массив, если я чего не путаю.
Только так:
function MoveListViewItem(listView: TListView; ItemFrom, ItemTo: Word): Boolean;
var
Source, Target: TListItem;
begin
Result := False;
listview.Items.BeginUpdate;
try
Source := listview.Items[ItemFrom];
Target := listview.Items.Insert(ItemTo);
Target.Assign(Source);
Source.Free;
Result := True;
finally
listview.Items.EndUpdate;
end;
end;
Zoidberg (2006-01-07 19:10:00) [4]А если я хочу переместить элемент из начала в конец, это нужно будет все элементы по порядку переписывать (включая Subitems)? А другого способа нет?
raidan (2006-01-07 18:25:00) [5]Поменять местами эту строку с той, куда ты этот элемент хочешь поместить.