Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
Вниз
TListView: переместить Items Найти похожие ветки
← →
IvanIvan (2008-09-04 20:39) [0]Есть TListView (ReportStyle), как во время работы программы передвигать Item ниже выше в списке?
← →
Сергей М. © (2008-09-04 20:45) [1]Удалить его и создать в новой нужной позиции (см. TListItems.Insert)
← →
Юрий Зотов © (2008-09-04 22:10) [2]Небольшое уточнение - не создать, а вставить. То есть, создавать новый Item не нужно, нужно вызвать Items.Delete, затем Items.AddItem. И не забыть про BeginUpdate - EndUpdate и try-finally.
← →
Германн © (2008-09-05 01:02) [3]Ещё одно совсем маленькое уточнение. "Удалить" подразумевает только удаление TListItem из списка Items. Но никак не уничтожение ни того TListItem, который нужно переместить, ни ссылки на него. А значит ссылку следует сначала запомнить в какой-то переменной, а уж потом вызвать Items.Delete.
Буквоед (с:)
← →
Германн © (2008-09-05 01:58) [4]И ещё одно совсем уж крошечное уточнение. У TListView.Items нет метода AddItem. А Insert есть.
Про то, что Add переводится как "добавить" я уж совсем молчу.
Буквоед (с:)
← →
Юрий Зотов © (2008-09-05 03:13) [5]Так... сам напросился. Наказываю за буквоедство. Вот куски из ComCtrls.pas (D7):
function TListItems.AddItem(Item: TListItem; Index: Integer): TListItem;
begin
if Item = nil then
Result := Owner.CreateListItem
else
Result := Item;
if Index < 0 then
Index := Count;
ListView_InsertItem(Handle, CreateItem(Index, Result));
end;
function TListItems.Insert(Index: Integer): TListItem;
begin
Result := AddItem(nil, Index);
end;
1. Как видим, метод AddItem все же есть (и он даже public).
2. Как видим, несмотря на то, как переводится слово "Add", этот метод делает именно то, что нам и требуется.
3. Как видим, метод Insert делает как раз совсем не то, что нам требуется.
4. Не спорь с дяденьками. В ЦК не дураки сидят, днем на Солнце не посылают.
← →
korneley © (2008-09-05 10:57) [6]А ещё это можно сделать сортировкой, определив соответствующим образом
ListView.OnCompare
, и манипулируя, например, значением свойстваData
уListItem
- а :)
← →
Германн © (2008-09-05 14:02) [7]
> Так... сам напросился. Наказываю за буквоедство. Вот куски
> из ComCtrls.pas (D7):
> 1. Как видим, метод AddItem все же есть (и он даже public).
Вот ещё одно яркое свидетельство, что призывы типа "Читай Справку, Там Всё Написано" очень вредны. Ибо справка в Дельфи живет своей собственной жизнью. Никак не связанной с исходниками. В исходниках Д6 тоже есть этот метод, а в справке нет.
> 4. Не спорь с дяденьками. В ЦК не дураки сидят
Да если б там сидели дураки разве я стал бы спорить! :)
← →
Deltas © (2008-09-05 18:27) [8]А вот в D5 действительно нет метода function
TListItems.AddItem(Item: TListItem; Index: Integer): TListItem;
Приходится сначала вставлять пустой объект классаTListItem
:function TListItems.Insert(Index: Integer): TListItem;
, а потом менять его свойства при помощи метода procedureTListItem.Assign(Source: TPersistent);
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.572 c