Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Через 3 дня :

День славянской письменности и культуры


Как сделать программу активной
На страницу 1, 2  След.

Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
AlexProdigy
Гость







СообщениеСр, 09-Июл-2003 10:57    Заголовок сообщения: Как сделать программу активной
Цитата

Не могу заставить свою программу стать активной и появиться на переднем плане...
SetForegroundWindow только инициирует моргание на таскбаре...
КАК сделать окно действительно АКТИВНЫМ???
чтобы фокус установился и т.д.
В начало
Пол:Муж Gelios
Oracle-вый маньяк, Админ


Возраст: 37
Знак зодиака: Водолей
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
СообщениеСр, 09-Июл-2003 11:05 
Цитата

а в какой момент ты пытаешься?
_________________
нельзя давать всем всего, ибо всех много, а всего мало
В начало
Посмотреть профиль Отправить личное сообщение
AlexProdigy
Гость







СообщениеПт, 11-Июл-2003 2:59 
Цитата

to Gelios
как в какой?
когда нужно сообщить что-нибудь срочное.

ну я почти решил уже, но мне не очень нравится решение...

сначала сворачиваем нашу прогу
Application.Minimize;

если "сворачивали в трей", то
if not IsWindowVisible(Application.Handle) then
ShowWindow(Application.Handle, SW_SHOW);

ну и восстанавливаем...
Application.Restore;
а уже при ресторе окно вылазит вперёд Улыбка

но всё-таки хочется "правильно" это всё делать, а то как-то кривовато...
В начало
Пол:Муж Gelios
Oracle-вый маньяк, Админ


Возраст: 37
Знак зодиака: Водолей
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
СообщениеПт, 11-Июл-2003 5:48 
Цитата

если ты работаешь с прогой, то она и так активна. А если хочешь вывести что0то важное, то юзай системное модальное окно. Оно будет поверх всех окон и невозможно будет переключится на другое окно, пока его не закроешь
_________________
нельзя давать всем всего, ибо всех много, а всего мало
В начало
Посмотреть профиль Отправить личное сообщение
AlexProdigy
Гость







СообщениеПт, 11-Июл-2003 7:11 
Цитата

to Gelios
а если человек (юзер) открыл мою программу, а потом чего-нибудь в ворде стал делать?
ему выдаётся системное сообщение и он станет звонить мне, чтобы проныть: "а чего это у меня ворд ругается?"
поэтому и нужно, чтобы появилось окно моей программы, и вывелось сообщение, иначе пользователь не поймёт, чего от него хочет "ворд" Улыбка

P.S. конечно же, я вставил проверку на активность своей программы, чтобы сразу выдавалось сообщение без всяких минимизаций...
P.P.S. хочется всё-таки увидеть вариант без лишнего Minimize/Restore... Rolling Eyes
В начало
Пол:Муж Gelios
Oracle-вый маньяк, Админ


Возраст: 37
Знак зодиака: Водолей
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
СообщениеПт, 11-Июл-2003 7:41 
Цитата

я сделал так:

на форму бросил TTimer, интервал установил в 10 секунд, в обработчике ontimer написал следующий код:
SetForegroundWindow(Handle);

Запустил прогу, переключился на другое приложение, через десят секунд, активным стало мое приложение.

_________________
нельзя давать всем всего, ибо всех много, а всего мало
В начало
Посмотреть профиль Отправить личное сообщение
AlexProdigy
Гость







СообщениеПт, 11-Июл-2003 8:04 
Цитата

to Gelios
смотри мой самый первый пост...

P.S. система - XP/2000
В начало
Пол:Муж Gelios
Oracle-вый маньяк, Админ


Возраст: 37
Знак зодиака: Водолей
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
СообщениеПт, 11-Июл-2003 8:13 
Цитата

у меня ХР и все нормально работает.
_________________
нельзя давать всем всего, ибо всех много, а всего мало
В начало
Посмотреть профиль Отправить личное сообщение
AlexProdigy
Гость







СообщениеПт, 11-Июл-2003 8:47 
Цитата

to Gelios
а у меня ~100 компьютеров с XP и 2000

и только в таскбаре моргает...
а если прога свёрнута в трей, то вообще только бип и всё...

P.S. какой у нас оживлённый разговор Beer
В начало
Пол:Муж Gelios
Oracle-вый маньяк, Админ


Возраст: 37
Знак зодиака: Водолей
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
СообщениеПт, 11-Июл-2003 8:56 
Цитата

дома почитаю литературу, а можь что найду...
_________________
нельзя давать всем всего, ибо всех много, а всего мало
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Gelios
Oracle-вый маньяк, Админ


Возраст: 37
Знак зодиака: Водолей
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
СообщениеПт, 11-Июл-2003 9:06 
Цитата

как вариант, у главной формы установи состиояние fmStayOnTop а потом сними
_________________
нельзя давать всем всего, ибо всех много, а всего мало
В начало
Посмотреть профиль Отправить личное сообщение
AlexProdigy
Гость







СообщениеПт, 11-Июл-2003 9:24 
Цитата

to Gelios
неее
я так уже делал
совсем извратно получается...
причём первый раз всё нормально, окно появляется, потом messagebox, но если не отреагировать на сообщение и опять уйти в другое окно, то больше не выводится...
а потом, когда переключаешься на прогу, то получается, что есть только одно модальное сообщение, а остальные, которые были до этого, как бы перестают быть модальными... и их можно даже не заметить, т.к. они будут за главной формой...
а если немодальных рабочих форм несколько, то вообще бардак получится...
так что вариант minimize/restore пока самый оптимальный...
правда прикольно выглядит, когда приложение, которое видно, но оно назаднем плане, вдруг минимизируется а потом восстанавливается и выдаётся сообщение Mr. Green
В начало
Пол:Муж Gelios
Oracle-вый маньяк, Админ


Возраст: 37
Знак зодиака: Водолей
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
СообщениеПт, 11-Июл-2003 9:45 
Цитата

если не секрет, то что за приложение?
_________________
нельзя давать всем всего, ибо всех много, а всего мало
В начало
Посмотреть профиль Отправить личное сообщение
AlexProdigy
Гость







СообщениеПт, 11-Июл-2003 9:57 
Цитата

to Gelios
это приложение для работы с БД
надо просто уведомлять пользователей о чём-нибудь, например, чтобы закрыли приложение...
хотя я и сам могу закрыть своё приложение удалённо, но думаю, что директору не понравится, если он чего-нибудь там делает, а программа закрывается... Улыбка
В начало
Пол:Муж Gelios
Oracle-вый маньяк, Админ


Возраст: 37
Знак зодиака: Водолей
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
СообщениеПт, 11-Июл-2003 10:39 
Цитата

а не проще ли в таких случаях net send юзать?

ведь программы работы с БД - это интерактивные программы, и даже если юзер запустит отчет на пол часа, то не обязательно его извещать об окончании расчета, так как он сам будет периодически на него перключаться, что бы проверить сформировалость или нет...

_________________
нельзя давать всем всего, ибо всех много, а всего мало
В начало
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Страница 1 из 2 На страницу 1, 2  След.
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100