Проблемы при наследование коллекций
От: nestermv  
Дата: 13.02.04 13:04
Оценка:
Доброго времени суток, уважаемые.
Возникла проблема следующего характера:
Если форма-Ancestor содержит компонент со свойством типа TCollection и эта коллекция уже содержит один елемент коллекции с обработчиком любого события , то при
наследовании формы средствами Delphi в DesignTime вываливается ошибка типа "error creating form: Access
violation at address xxxx in module 'vcl50.bpl'. Read of address 00000000".
Ясное дело inherited форма не создаётся. Если же у елемента коллекции нет обработчиков, то
наследование происходит корректно.
Как обойти данное поведение.
З.Ы. Такое можно смоделировать так:
1. Положив на форму TClientDataSet.
2. Вызвать редактор свойствa TAggregates (наследник TCollection) и создать один елемент этой коллекции и у него назначить обработчик события OnUpdate.
3. Попробовать унаследовать эту форму.
Конкретно компонент TClientDataSet не интересует, он приведен для примера. Интересует поведение TCollection при наследовании
С уважением Нестерчук М.
Posted via RSDN NNTP Server 1.8 beta
Re: Проблемы при наследование коллекций
От: nestermv  
Дата: 13.02.04 13:23
Оценка:
В исходном посте забыл указать, что используется DElphi5.

С уважением Нестерчук М.
Posted via RSDN NNTP Server 1.8 beta
Re[2]: Проблемы при наследование коллекций
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 13.02.04 15:12
Оценка:
Здравствуйте, nestermv, Вы писали:

N>В исходном посте забыл указать, что используется DElphi5.


Аналогичный эффект. Ошибка, видимо создается при попытке чтения созданного dfm-файла, потому как обходной путь (создать форму, наследоваться, а только потом установить обработчик события) приводит к ошибке

[Error] RLINK32: Error opening file "Q:\Labs\Lab2\Unit3.DFM"

Остается связывать сообщение динамически.
Re: Проблемы при наследование коллекций
От: Diouzshev Россия  
Дата: 13.02.04 15:24
Оценка:
Hello, nestermv!
You wrote on Fri, 13 Feb 2004 13:04:41 GMT:

n> Возникла проблема следующего характера:

n> Если форма-Ancestor содержит компонент со свойством типа TCollection
n> и эта коллекция уже содержит один елемент коллекции с обработчиком
n> любого события , то при наследовании формы средствами Delphi в
n> DesignTime вываливается ошибка типа "error creating form: Access
n> violation at address xxxx in module 'vcl50.bpl'. Read of address
n> 00000000".
n> Ясное дело inherited форма не создаётся. Если же у елемента коллекции
n> нет обработчиков, то наследование происходит корректно.
n> Как обойти данное поведение.
n> З.Ы. Такое можно смоделировать так:
n> 1. Положив на форму TClientDataSet.
n> 2. Вызвать редактор свойствa TAggregates (наследник TCollection) и
n> создать один елемент этой коллекции и у него назначить обработчик
n> события OnUpdate.
n> 3. Попробовать унаследовать эту форму.
n> Конкретно компонент TClientDataSet не интересует, он приведен для
n> примера. Интересует поведение TCollection при наследовании

В D6U2 в вышеописанной ситуации все нормально, но на подобные глюки натыкался не раз...

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

With best regards, Alexander Diouzshev-Maltsev.
Posted via RSDN NNTP Server 1.8 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.