2010-04-21 2 views
3

Я использую Delphi 4. У меня есть основная форма с кнопкой, которая динамически создает новую форму. Я бы хотел, чтобы новая форма была видимой, но чтобы показать вверх по главной форме.Delphi - Создать форму за другой формой

Я пытался позвонить SendToBack() сразу после FormCreate(). Но это заставляет окно мерцать быстро, прежде чем оно действительно отправлено обратно.

Я пробовал сделать форму невидимой, затем SendToBack(), затем Visible := true. Но новая форма все еще впереди.

Похоже, SendToBack() работает только с видимыми формами? Как заставить форму отображать за основной формой?

ответ

0

сделать второе окно (например, Form2) невидимым, а затем вызвать:

showWindow(form2.handle,SW_SHOWNOACTIVATE); 

-don

+0

Спасибо, но это не сработало. если я вызываю ShowWindow (newform.handle, SW_SHOWNOACTIVATE), то newform.Visible: = true. Он все еще выходит впереди. – Clement

+0

Зачем вызывать newform.visible: = true; ? если вы оставите это, он должен работать. –

+0

Позже я проверяю «if (newform.visible), затем« делать »;». Но используя showWindow() без видимого: = true, видимое свойство кажется ложным. – Clement

1

Это работает для меня:

SetWindowPos(newform.Handle, HWND_BOTTOM, 0, 0, 0, 0, SWP_SHOWWINDOW 
    or SWP_NOMOVE or SWP_NOOWNERZORDER or SWP_NOSIZE or SWP_NOACTIVATE); 

newform.Visible := true; 

Спасибо за помощь!

Смежные вопросы