Конференция "Основная" » События OnEnter и OnExit. [D7, WinXP]
 
  • S7r (11.04.08 00:44) [0]
    Здравствуйте. Возникла такая проблема: есть компонент скажем memo родителем которого также являеться memo:
    Memo1.Parent:=Memo2


    Теперь если например щелкнуть правой кнопкой мыши по memo1 то у memo1 сработает сначало OnExit а затем сразу OnEnter. Это крайне не желательное поведение. Можно ли каким-либо образом избавиться от потери и восстановления фокуса в данном случае? Или хотябы определить что это фиктивная его потеря (дело в том что даже в WndProc Memo2 управление передается только после OnExit у Memo1)
    Дело в том что мне необходимо при выходе фокуса из Memo1 спрятать его и уничтожить т.к. это вспомогательный компонент, но из за подобного поведения при попытке открыть его контекстное меню все накрывается.
    Заранее благодарен за совет.
  • Германн © (11.04.08 00:59) [1]

    > S7r   (11.04.08 00:44)

    Memo, у которого Parent тоже Memo, кажется мне весьма надуманным примером. Может перейдешь к реальному примеру? Это во-первых. Во-вторых, зачем задал вопрос в WinAPI? Разве
    > События OnEnter и OnExi
    имеют какое-либо отношение к WinAPI?
  • S7r (11.04.08 01:11) [2]
    Может перейдешь к реальному примеру?
    Хорошо. Есть listview. у него есть поле появляющееся для редактирования caption item'a. Это поле я хочу заменить на memo. Суть вроде не сильно изменилась... З.ы. заменяю я его не просто так а потому что ListView в OwnerDraw и редактирование caption также реализовывалось вручную.

    Во-вторых, зачем задал вопрос в WinAPI?
    Мда. С этим вышла накладка. Стоит меня пнуть.
  • S7r (11.04.08 01:19) [3]
    Да корни растут вот оттуда:
    http://pda.delphimaster.net/?id=1206293624&n=5
  • Германн © (11.04.08 01:31) [4]

    > S7r   (11.04.08 01:11) [2]
    >
    > Может перейдешь к реальному примеру?
    > Хорошо. Есть listview. у него есть поле появляющееся для
    > редактирования caption item'a. Это поле я хочу заменить
    > на memo. Суть вроде не сильно изменилась...

    Суть изменилась радикально. "поле появляющееся для
    > редактирования caption" есть InplaceEditor. Именно его и нужно реализовать в наследнике TListView.
  • S7r (11.04.08 01:45) [5]
    Такc.
    >есть InplaceEditor. Именно его и нужно реализовать в наследнике TListView.
    Беглый поиск по InplaceEditor что-то не дал серьезных результатов. Это какой-то стиль окон редактирования или я ошибаюсь?
    Теперь известно какое поведение memo мне необходимо. Я так понимаю я копаю не в ту сторону удаляя свой мемо в OnExit?
  • Германн © (11.04.08 02:04) [6]

    > S7r   (11.04.08 01:45) [5]
    >
    > Такc.
    > >есть InplaceEditor. Именно его и нужно реализовать в наследнике
    > TListView.
    > Беглый поиск по InplaceEditor что-то не дал серьезных результатов.
    >  Это какой-то стиль окон редактирования или я ошибаюсь?

    Ошибаешься. Для каждого свойства (property), которое допускает редактирование в рантайме и/или дизайнтайме, должен быть зарегистрирован свой редактор.
  • S7r (11.04.08 03:05) [7]
    Итак временно решил проблему. Поставил Parent'ом моему Memo владельца listview. Теперь при открытии контекстного меню фокус не теряется. Но мне такое решение не очень нравится. Потому как этот memo я уничтожал в деструкторе listview. А так получаеться я оставляю это на совести владельца. Да и преобразования ClientToParent для позиционирования memo тоже напрягают.
  • Германн © (11.04.08 03:13) [8]

    > S7r   (11.04.08 03:05) [7]

    Не тем путём идёте товарисчь!
  • S7r (11.04.08 18:28) [9]

    > Не тем путём идёте товарисчь!


    Так направте, не сочтите за труд.
  • Германн © (11.04.08 21:37) [10]

    > Так направте, не сочтите за труд.
    >

    Ну почитай хотя бы это:
    http://www.delphikingdom.com/asp/viewitem.asp?catalogid=806#02
  • имя (14.04.08 19:58) [11]
    Удалено модератором
  • S7r (14.04.08 20:01) [12]
    Спасибо за ссылку. Но, к сожалению, там нет ничего нового. Родителем Inplace Editor там также является форма.
  • Семеныч (14.04.08 20:06) [13]
    Почему бы не редактировать заголовок Item'а в отдельном многострочном редакторе с модальной формой? Делается за 15 минут и все проблемы сразу исчезают.
  • имя (16.04.08 05:44) [14]
    Удалено модератором
  • имя (05.05.08 17:48) [15]
    Удалено модератором
 
Конференция "Основная" » События OnEnter и OnExit. [D7, WinXP]
Есть новые Нет новых   [134433   +25][b:0][p:0.001]