Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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;, а потом менять его свойства при помощи метода procedure TListItem.Assign(Source: TPersistent);



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.047 c
4-1197627377
lead-in
2007-12-14 13:16
2008.10.12
WinSock2, ф. Connect


2-1220272776
fellow
2008-09-01 16:39
2008.10.12
richedit и ??????? вместо кириллицы


13-1121805388
NewWonder
2005-07-20 00:36
2008.10.12
C#: Borland or MS?


2-1220248002
Abcdef123
2008-09-01 09:46
2008.10.12
Работа в среде Дельфи 2007.Что значат ошибки в окне Structure?


3-1207245676
kotyara12
2008-04-03 22:01
2008.10.12
Рекурсивная выборка из таблицы со структурой дерева





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский