|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.08.2011, 14:36 | #1 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
Как перемещать itemы в Listivew (vsReport) с ownerdata=true?
Всем доброго времени суток.
Использую Listview в режиме ownerdata=true. Все бы хорошо, но как реализовать перемещение (дарндроп) строк внутри? Когда ownerdata ВЫключен, то все отлично, а с включенным проблемы. Главное это то что видимо не работает GetItemAt(X, Y). Он выдает неверный item. Кто-нибудь с этим сталкивался? Как решить проблему? Заранее благодарен. |
24.08.2011, 16:54 | #2 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
А почему решили, что выдаёт неверный Item? Index неверный?
|
24.08.2011, 17:17 | #3 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
|
24.08.2011, 17:29 | #4 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
Не сталкивался с таким. Проверьте внимательнее свой код, возможно, что пытаетесь получить Item после каких-то манипуляций со вставкой/перемещением. Во всяком случае это достаточно легко проверить - просто выводите в Caption формы Item.Index при любых кликах на TListView - так быстро убедитесь в работоспособности компонента и будете искать ошибку в своём коде.
|
24.08.2011, 20:36 | #5 | |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
Цитата:
|
|
24.08.2011, 20:41 | #6 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
100% нормально и не работает? Тогда проверьте: OwnerDate=True означает внешнее хранилище данных. Как оно у Вас реализовано и каков к нему доступ из TListView? Чудес не бывает, знаете ли. Если абсолютно уверены - код на обработчики TListView в студию
|
24.08.2011, 22:02 | #7 |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
Да точно все верно.
Проблема вот в чем. Берем 10-й итем и перемещаем его в 6-й. А выделяется только 9-й. А вот как это работает с выключенным ownerdata: Последний раз редактировалось Anfall; 24.08.2011 в 22:06. |
24.08.2011, 23:10 | #8 |
Форумчанин
Регистрация: 11.03.2011
Сообщений: 426
|
Похоже, что Ваша проблема в другом: OwnerDate=True означает внешнее хранилище данных и TListView только отображает данные, которые Вы должны обрабатывать программно, в том числе и метод Drag&Drop. В данном случае выделенный 10 элемент Вы хотите перенести на место 6 или, иначе, выделенный Item вы переносите в место GetItemAt(X, Y). Ну так и переносите методами Вашего хранилища данных, а после переноса давайте команду Refresh компоненту TListView
|
24.08.2011, 23:26 | #9 | |
Форумчанин
Регистрация: 10.02.2009
Сообщений: 181
|
Цитата:
|
|
24.08.2011, 23:41 | #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 |