![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Автоматическое фокусирование окна [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 этой формы