Вопрос из разряда "доктор, у меня под полом стук", но уже почти отчаялся.
"Перетаскиваю" чужой компонент под Vcl.Net.
Кратко:
это самопальный грид (наследуется от TCustomControl).
В определенный момент он создает инплейсЕдитор (наследника от TCustomMaskEdit). В Parent ему прописывает себя.
Когда едит прячется, он делает так:
Windows.SetFocus( Self.Grid.Handle );
И вот тут случается:
System.NullReferenceException with message 'Object reference not set to an instance of an object.'.
(Self.Grid.Handle валидный и осмысленный)
Если эту конструкцию заменить на что-нибудь типа
Self.Grid.SetFocus
или
GetParentForm( Grid ).FocusControl( Grid );
то ексепшена сразу нету и случается что-то вообще странное:
ActiveControl'ом у формы, на которой все происходит становится Grid, но вот .Focused у него = false. !!!
И как только Grid начинает терять фокус (тыкаю в другой контрол или в окно другого приложения), случается тот же самый эксепшн, причем где-то внутри VCL.
Подскажите, пожалуйста, куда копать.
Спасибо