Конференция ".Net" » Проблемы с SetFocus у контрола [D8, WinXP]
 
  • Андрей из Иркутска (08.06.07 14:33) [0]
    Вопрос из разряда "доктор, у меня под полом стук", но уже почти отчаялся.

    "Перетаскиваю" чужой компонент под 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.

    Подскажите, пожалуйста, куда копать.

    Спасибо
  • Андрей из Иркутска (08.06.07 15:20) [1]
    "Победил" :)

    Всем компонентрайтерам читать Конопку :)

    http://bdn1.borland.com/borcon2005files/33182/33182_10030215_S.PPT
 
Конференция ".Net" » Проблемы с SetFocus у контрола [D8, WinXP]
Есть новые Нет новых   [134427   +34][b:0][p:0]