| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > CreateParams |
| Автор: drkot 20.4.2012, 02:06 |
| Код описанный http://forum.vingrad.ru/faq/topic-156041/hl/%2526quot%3B%25D0%25BF%25D1%2580%25D0%25B8%25D0%25BA%25D1%2580%25D0%25B5%25D0%25BF%25D0%25B8%25D1%2582%25D1%258C+%25D1%2581%25D0%25B2%25D0%25BE%25D1%258E+%25D1%2584%25D0%25BE%25D1%2580%25D0%25BC%25D1%2583+%25D0%25BA+%25D0%25B4%25D1%2580%25D1%2583%25D0%25B3%25D0%25BE%25D0%25BC%25D1%2583+%25D0%25BF%25D1%2580%25D0%25B8%25D0%25BB%25D0%25BE%25D0%25B6%25D0%25B5%25D0%25BD%25D0%25B8%25D1%258E%2526quot%3B/index.html не дает желаемого результата, а именно self.ParentWindow остается равным 0 (ноль) и как следствие форма не цепляется к нужному окну. сама форма создается Application.CreateForm(TForm1, Form1). Достичь требуемого результата удалось только через CreateParented. Вопрос: в чем проблема при создании формы через Application.CreateForm (почему в этом случае игнорируется params.WndParent)? Либо я реально глючу... |
| Автор: Чучмек 20.4.2012, 09:36 |
| При Application.CreateForm форма "цепляется", только поведение у нее отличается от созданной с помощью CreateParented. По-моему очевидно различие в стилях, с которыми создается окно. Добавь в CreateParams Params.Style:=Params.Style or WS_CHILD; |
| Автор: Чучмек 21.4.2012, 21:12 |
В XE не проверял, нету. На D7 все работает. Сейчас проверил на XE2 - без ws_child - идентично D7 - (при сворачивании "родительского" окна, сворачивается и наше), с ws_child форма создается скрытой, поэтому необходимо добавить form1.Show после Application.CreateForm(TForm1, Form1); А parentWindow действительно возвращает 0 |
| Автор: drkot 26.4.2012, 12:05 |
| Проблема как обычно была в ДНК... Квадрат в котором нужно отобразить форму определен относительно экрана, при создании формы позиционирую ее в этот квадрат... забывая о пересчете его относительно родительского окна... |