![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
![]()
Всем доброго времени суток.
Использую Listview в режиме ownerdata=true. Все бы хорошо, но как реализовать перемещение (дарндроп) строк внутри? Когда ownerdata ВЫключен, то все отлично, а с включенным проблемы. Главное это то что видимо не работает GetItemAt(X, Y). Он выдает неверный item. Кто-нибудь с этим сталкивался? Как решить проблему? Заранее благодарен. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]()
А почему решили, что выдаёт неверный Item? Index неверный?
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
![]() |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]()
Не сталкивался с таким. Проверьте внимательнее свой код, возможно, что пытаетесь получить Item после каких-то манипуляций со вставкой/перемещением. Во всяком случае это достаточно легко проверить - просто выводите в Caption формы Item.Index при любых кликах на TListView - так быстро убедитесь в работоспособности компонента и будете искать ошибку в своём коде.
|
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]()
100% нормально и не работает? Тогда проверьте: OwnerDate=True означает внешнее хранилище данных. Как оно у Вас реализовано и каков к нему доступ из TListView? Чудес не бывает, знаете ли. Если абсолютно уверены - код на обработчики TListView в студию
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
![]()
Да точно все верно.
Проблема вот в чем. Берем 10-й итем и перемещаем его в 6-й. А выделяется только 9-й. ![]() А вот как это работает с выключенным ownerdata: ![]() Последний раз редактировалось Anfall; 24.08.2011 в 22:06. |
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]()
Похоже, что Ваша проблема в другом: OwnerDate=True означает внешнее хранилище данных и TListView только отображает данные, которые Вы должны обрабатывать программно, в том числе и метод Drag&Drop. В данном случае выделенный 10 элемент Вы хотите перенести на место 6 или, иначе, выделенный Item вы переносите в место GetItemAt(X, Y). Ну так и переносите методами Вашего хранилища данных, а после переноса давайте команду Refresh компоненту TListView
|
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
![]()
Так нет никакого трабла. За хранение выделенных элементов тоже программист отвечает и при изменении списка именно программист должен изменить выделение
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как перемещать label с помощью мыши? | Лукманов Александр | Общие вопросы Delphi | 9 | 26.11.2018 20:23 |
Как перемещать изображение по панели? | AndersonEgo | C# (си шарп) | 3 | 27.05.2011 10:05 |
Как узнать индексы выделенных итемов в ListView при OwnerData? | 3D Hunter | Общие вопросы Delphi | 3 | 02.10.2009 10:24 |
как работать с новыми CheckBox в ListView в режиме vsReport | cybopob90 | Компоненты Delphi | 2 | 24.03.2009 13:02 |
Как перемещать? | Черничный | Общие вопросы Delphi | 4 | 09.06.2008 13:56 |