Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Автоматическое фокусирование окна [D6, Win2k, WinXP]


MixAnOL ©   (2005-10-13 11:56:00) 

Здорова всем!

Нужно решить проблему, когда рабочее окно теряет фокус ввода (по разным причинам), то нужно это окно опять активировать.

Что-то ни как не получается....
Есть у кого идеи?


psa247   (2005-10-14 17:20:00) [1]

смотри пост CBT_Hook в этом форуме. Там есть возможность контролировать потерю фокуса. Единственное, аккуратнее надо быть при написании кода. Подвесить систему можно.


MixAnOL   (2005-10-13 14:53:00) [2]

2 Digitman: не ругайся, понял уже...


MixAnOL   (2005-10-13 14:49:00) [3]

Я сделал почти тоже самое, только не дошел до окна на новом декстопе...

Спасибо! Это тоже решение, буду его тоже использовать...


Digitman   (2005-10-13 14:47:00) [4]


> MixAnOL   (13.10.05 12:35) [5]
> твой предложенный метод не работает)))
> у меня, лично, это событие не срабатывает когда деактифирутся
> окно...
>
> Создал пустой проект, в OnDeactivate написал Form1.Activate;
>  поставил бряк, запустил, жахнул на рабочий стол, т.е. деактивировал
> окно, - бряк молчит.


а комментировать твое "рабочее окно теряет фокус ввода" Пушкин будет ?

код приведен для случая, когда фокус пытается получить любое иное окно того жепроцесса !

что ,обязательно догадываться нужно о том что тебя интересует ситуация с потерей фокуса, выходящей за рамки окон одного и того же процесса ?


Leonid Troyanovsky   (2005-10-13 14:36:00) [5]


> MixAnOL   (13.10.05 14:09) [11]
> А попроще ничего нет?)))


А чего там сложного?

http://groups.google.com/group/borland.public.delphi.nativeapi/msg/04a7a516cbbee32a

--
Regards, LVT.


MixAnOL   (2005-10-13 14:09:00) [6]

А попроще ничего нет?)))
почитал про Desktopы, идея понравилась...


Игорь Шевченко   (2005-10-13 13:54:00) [7]


> это будет смахивать на программу удалённого администрирования
> компзала


Это еще почему ? :)


markers   (2005-10-13 13:34:00) [8]


> Пускай оное приложение на отдельном собс-ручно
> созданном десктопе и будет тебе счастье.
> RTFM: msdn: CreateDesktop, SetThreadDesktop, SwitchDesktop,
> CloseDesktop.

IMHO Черезчур, вещь конечно хорошая, но тогда это будет смахивать на программу удалённого администрирования компзала....


Leonid Troyanovsky   (2005-10-13 13:20:00) [9]


> MixAnOL   (13.10.05 12:21) [3]

> Ну не надо тут разводить..... а если это рабочая программа
> типа АРМа, где фокус всегда должен быть в одном окне?


Пускай оное приложение на отдельном собс-ручно
созданном десктопе и будет тебе счастье.

RTFM: msdn: CreateDesktop, SetThreadDesktop, SwitchDesktop,
CloseDesktop.

--
Regards, LVT.


MixAnOL   (2005-10-13 12:54:00) [10]

>Не издевайся над пользователем
Издевательсвом будет есть как раз этот фокус потеряется... так что оставь свои замечания при себе...

Я так понял что нужно смотреть в сторону Application.OnDeactivate; но чего там прописать? Application.BringToFront не помогает...


Игорь Шевченко   (2005-10-13 12:44:00) [11]


> Ну не надо тут разводить..... а если это рабочая программа
> типа АРМа, где фокус всегда должен быть в одном окне?


Не издевайся над пользователем


MixAnOL   (2005-10-13 12:35:00) [12]

твой предложенный метод не работает)))
у меня, лично, это событие не срабатывает когда деактифирутся окно...

Создал пустой проект, в OnDeactivate написал Form1.Activate; поставил бряк, запустил, жахнул на рабочий стол, т.е. деактивировал окно, - бряк молчит.

Может эта деактивация для многооконных приложений? а мне надо при переключении на другое приложение...


Digitman   (2005-10-13 12:27:00) [13]


> не работает


вот и рассказывай подробно, что там и как у тебя "не работает" ..

телепаты как всегда - в отпуске)


MixAnOL   (2005-10-13 12:21:00) [14]

>В корзину такие программы

Ну не надо тут разводить..... а если это рабочая программа типа АРМа, где фокус всегда должен быть в одном окне?

>достаточно будет вызвать метод Activate этой формы
дык это было первое что я пробовал.... не работает....

или вызывать надо что-то другое...


Игорь Шевченко   (2005-10-13 12:10:00) [15]


> когда рабочее окно теряет фокус ввода (по разным причинам),
>  то нужно это окно опять активировать.


В корзину такие программы


Digitman   (2005-10-13 12:08:00) [16]

у формы есть событие OnDeactivate, в обработчике которого, наверно, достаточно будет вызвать метод Activate этой формы


Наверх

Титульная страница Поиск, карта сайта Написать письмо