![]() |
|
|
![]()
|
|
| Гость_zogman |
|
|||
|
Unregistered |
как проверить что форма сейчас наверху ?
т.е. видна пользователю, а не загорожена другими формами ? |
|||
|
||||
| sexton |
|
|||
![]() sexton=Пономарь (eng) ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 5.5.2004 Где: Ульяновск Репутация: 5 Всего: 9 |
Мммм... А событие OnActivate тебе никак не поможет?
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
GetTopWindow() и сравниваеш результат с хендлом своей формы
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Гость_zogman |
|
|||
|
Unregistered |
по-моему нет хотя я не очень понимаю о чем идет речь,
я хочу сделать такое - есть много форм с кнопками, которые запускают разные процессы, а одна общая форма куда все процессы будут делать оутпут, - поэтому хотелось бы когда этот оутпут делается - то чтобы пользователь это видел, один вариант сделать так:
но при тогда при каждом выводе происходит какое-то типа мигание - что не эстетично. |
|||
|
||||
| Гость_zogman |
|
|||
|
Unregistered |
_hunter спасибо, сейчас попрубую !
(предыдущий мой мессадж был - sextonу) |
|||
|
||||
| Гость_zogman |
|
|||
|
Unregistered |
_hunter проблем:
а как мне поставить форму on Top ? я делаю так:
но после этого условие GetTopWindow(NULL)==TextOutputForm->Handle Не выполнено |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
тогда проще сделать форму fsStayOnTop
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Гость_zogman |
|
|||
|
Unregistered |
Ну тогда это будет мешать пользователю работать с другими прогоми
- у меня вывод происходит не так часто а прога считает долго, пока она считает и молчит нечего ей делать онТопе |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
А почему просто не сделать
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Cheremnov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 28.11.2005 Репутация: нет Всего: нет |
В такой ситуации завожу пользовательское сообщение,
ставлю на нее ловушку, в которой делается вызов: TextOutputForm->BringToFront(); TextOutputForm->WindowState:=wsNormal; |
|||
|
||||
| Гость_zogman |
|
|||
|
Unregistered |
команды
TextOutputForm->BringToFront(); и TextOutputForm->Show(); делают форму видимой и самой верхней, среди всех форм данного приложения, то есть если мое приложение загорожено чем-то еще, то это не помогает А есть ли средство показать форму даже если она загорожена другими прогами ? Cheremnov не понял что есть "пользовательское сообщение, ставлю на нее ловушку" ? |
|||
|
||||
| sexton |
|
|||
![]() sexton=Пономарь (eng) ![]() ![]() Профиль Группа: Участник Сообщений: 503 Регистрация: 5.5.2004 Где: Ульяновск Репутация: 5 Всего: 9 |
что-то я все меньше понимаю чего хочет человек
|
|||
|
||||
| zogma |
|
|||
|
Unregistered |
sexton ???
|
|||
|
||||
| Гость_zogman |
|
|||
|
Unregistered |
Мне тут объяснили как поднять свою форму наверх
(http://forum.sources.ru/index.php?showtopic=123916) приведу ето здесь может будет кому еще полезно evGenius: Как утверждает документация, SetForegroundWindow работает как нам нужно, только если вызывающий её процесс является активным. А активен тот процесс, чей поток обрабатывает пользовательский ввод. Оказывается, наш процесс может "прикинуться" активным, подключив свой поток к обработке пользовательского ввода. Это осуществляется при помощи функции AttachThreadInput. После вызова SetForegroundWindow можно будет отключиться от чужого потока, используя ту же функцию (но передавая в качестве третьего параметра FALSE, а не TRUE). Реализация этой идеи выглядит так. HWND hCurrWnd; int iMyTID; int iCurrTID; hCurrWnd = ::GetForegroundWindow(); iMyTID = GetCurrentThreadId(); iCurrTID = GetWindowThreadProcessId(hCurrWnd,0); AttachThreadInput(iMyTID, iCurrTID, TRUE); // hWnd - дескриптор окна. SetForegroundWindow(hWnd); AttachThreadInput(iMyTID, iCurrTID, FALSE); Моя практика показывает, что описанный метод успешно работает как под Windows 98/Me, так и под Windows 2000. -------------------------------------------------------------- Цитата (Сергей К. @ 1.12.05, 09:06) SetWindowPos однозначно должна работать -- для того и сделана evGenius: Нет, такая возможность для неактивных процессов заблокирована в новых версиях Windows. На замену пришло мигание в таскбаре. |
|||
|
||||
| Gala |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 15.9.2005 Репутация: 2 Всего: 2 |
Если находишся в программе форму которой ты проверяещь тогда так
if (Application->Form1->Active) { ... } |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |