Открытие формы без фокуса
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.102] |
|
|
ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Открытие формы без фокуса
|
Сообщ.
#1
,
|
|
|
|
Есть проблема: нужно открывать новое окно в программе но не передавать ему фокуса.
Случай когда фокус передается новому окну, а потом обратно не подходит. Подскажите как это сделать. |
|
Сообщ.
#2
,
|
|
|
|
примерно так:
![]() ![]() Form2.Show; // это та форма которая показывается, но без фокуса Form1.Active:=True; // убираем фокус с form2, но делаем активной первую форму => фокус со второй форму уйдёт |
|
Сообщ.
#3
,
|
|
|
|
GreySkil ты уверен что именно это надо ? Может ты что-то перемудрил, скажи дял чего нужно и возможно найдется другое решение.
|
|
Сообщ.
#4
,
|
|
|
|
создаешь новое окно и показываешь его:
showWindow(NewForm.Handle, SW_SHOWNOACTIVATE) |
|
Сообщ.
#5
,
|
|
|
|
Дело в том, что окно которое появляется оно должно появлятся на заднем плане и не влиять на работу главной. А то получается работаешь в главеой, а тут бац и эта фоновая форма. Если сделать как предложил SPrograMMer то получатеся, что окно во-первых мигнет, а во-вторых все popupmenu закрываются ну и ваще всяких пробблем много.
Добавлено showWindow(NewForm.Handle, SW_SHOWNOACTIVATE) работает вроде, будут проблемы напишу. Miscђka ПАСИБО Добавлено А вот и она - ПРОБЛЕМА. Окно то теперь не закрывается совсем. Как его закрыть. Програмно |
|
Сообщ.
#6
,
|
|
|
|
![]() ![]() showWindow(NewForm.Handle, SW_HIDE); // Прячем NewForm.free(); // и удаляем нафиг, если надо. |
|
Сообщ.
#7
,
|
|
|
|
Во все, Спасибо.
|
|
Сообщ.
#8
,
|
|
|
|
Цитата GreySkil @ Во все, Спасибо. Вопрос решен? |
|
Сообщ.
#9
,
|
|
|
|
Miscђka, да тот вопрос решен, но тут такая тема возникла недавно, нада эту форму показывать поверх остальных, свойство Formstyle(fsStayOnTop) не работает, как мне ее сделать поверх всего.
|
|
Сообщ.
#10
,
|
|
|
|
Цитата GreySkil @ свойство Formstyle(fsStayOnTop) как это не работает? В рамках одной программы должно работать. Если поверх всех окон в системе, независимо от активности твоей проги - то нужно ловить сообщение WM_WINDOWPOSCHANGED и с помощью setWindowPos() выдвигать на первый план. Ищи в разделе АПИ - там было. |
|
Сообщ.
#11
,
|
|
|
|
Я в другой теме показал самый простой и эффективный способ:
Проблема с MDIChild (сообщение #837156) |
|
Сообщ.
#12
,
|
|
|
|
не уверен, что использование стола в качестве родителя всегда оправдано
Пусть будет несколько вариантов на выбор. |
|
Сообщ.
#13
,
|
|
|
|
s-mike, использовал твой код, форма появляется, но она отображается в taskbar как отдельное приложение как мне убрать эту форму оттудова?
|