У меня есть пользовательский потомок 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 становится скучной, поскольку я часто использую этот компонент, иногда много раз в одной форме.
Может кто-нибудь подсказать, в чем заключается моя проблема?