Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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;

Автор: drkot 20.4.2012, 21:39
да я часа два комбинации перебирал...
Application.CreateForm никак зацепить не удалось

Цитата(Чучмек @  20.4.2012,  09:36 Найти цитируемый пост)
При Application.CreateForm форма "цепляется", только поведение у нее отличается от созданной с помощью CreateParented.

если бы цеплялось, то значение родителя было бы отличное от нуля...

если твой код цепляет главную форму через CreateParams то мне бы хотелось увидеть код  smile

Добавлено через 50 секунд
сейчас работаю с Delphi XE

Автор: Чучмек 21.4.2012, 21:12
Цитата(drkot @  20.4.2012,  21:39 Найти цитируемый пост)
сейчас работаю с Delphi XE 

В XE не проверял, нету. На D7 все работает.
Сейчас проверил на XE2 - без ws_child - идентично D7 - (при сворачивании "родительского" окна, сворачивается и наше), с ws_child форма создается скрытой, поэтому  необходимо добавить form1.Show после Application.CreateForm(TForm1, Form1); А parentWindow действительно возвращает 0

Автор: drkot 26.4.2012, 12:05
Проблема как обычно была в ДНК...
Квадрат в котором нужно отобразить форму определен относительно экрана, при создании формы позиционирую ее в этот квадрат... забывая о пересчете его относительно родительского окна... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)