Спорадическое повреждение DFM TListView.Items.ItemData - PullRequest
3 голосов
/ 06 января 2010

У меня есть пользовательский потомок TListView, который я изначально создал в D2007 и теперь использую в D2010. Элемент управления работал в D2007 без проблем, но в D2010 я наблюдаю спорадические, но частые случаи, когда DFM не может быть загружен исполняемым файлом и выдает ошибку EReadError с сообщением:

'Error reading lvPremiums.Items.ItemData: Stream read error'

где "lvPremiums" - это имя моего потомка TListView. Это происходит, когда я компилирую в среде разработки. Я не редактировал никаких свойств элемента управления, но в основном я выполнил команду «Сохранить все» из меню. Мой потомок представления списка не устанавливает никаких элементов по умолчанию, они создаются во время выполнения.

Я могу решить эту проблему, открыв свойство Items из инспектора объектов, затем сразу же нажмите кнопку ОК и снова сохраните форму.

Визуальная проверка файла DFM для формы, которая была повреждена таким образом, показывает объявление свойства в компоненте lvPremium:

Items.ItemData = {}

Эта строка отсутствует, когда форма была "исправлена" и является работоспособным состоянием.

Проверяя исходный код моего потомка TListView, он не содержит имени «ItemData», и я не могу найти это документально на экране справки TListItems.

Необходимость исправления этой посторонней вставки в DFM становится скучной, поскольку я часто использую этот компонент, иногда много раз в одной форме.

Может кто-нибудь подсказать, в чем заключается моя проблема?

Ответы [ 2 ]

4 голосов
/ 07 января 2010

Об этом сообщили в Quality Central: QC78778

Ther также является формальной нитью об этом здесь . Возможно, вы можете найти обходной путь.

0 голосов
/ 05 октября 2014

При использовании CG2009 эта проблема возникла у меня после того, как я установил Свойства -> ReadOnly, открыл редактор Свойства -> Элементы и оставил его пустым. Он исчез после того, как я добавил элемент и восстановил его, затем удалил элемент и снова восстановил.

...