Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проверка на активность формы возвращает True после сворачивания  (Прочитано 15115 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Shouldercannon
Постоялец

ru
Offline Offline

« : 28-12-2014 08:20 » 

Доброго времени суток!
Не могу понять в чём дело. Если форму свернуть с помощью иконки Свернуть в верхнем правом углу формы, то проверка на активность формы возвращает False. Если форму свернуть кликнув по кнопке формы на Панели задач, то проверка на активность возвращает True.
Помогите, пожалуйста разобраться.

У каждой формы есть своя кнопка на панели задач благодаря
Код: (Delphi)
procedure TForm.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;

Что делаем:
1. Запускаем приложение, нажимаем кнопку Test (у нас есть 3 секунды) и сразу же сворачиваем форму на Панель задачь через кнопку Свернуть в верхнем правом углу формы. В данном случае всё нормально и звук не проигрывается.
2. Запускаем приложение, нажимаем кнопку Test (у нас есть 3 секунды) и сразу же сворачиваем форму на Панель задачь через кнопку формы на Панели задач. В данном случае звук проигрывается говоря о том, что форма активна, но она свёрнута и не показывается.

* Test.zip (327.45 Кб - загружено 650 раз.)
Записан
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #1 : 28-12-2014 09:15 » 

Проверка на активность методом Self.Active не совсем корректна. Для этого надо смотреть как в дельфи реализовано свойство формы Active изнутри.
GetForegroundWindow в помощь.
Записан
Shouldercannon
Постоялец

ru
Offline Offline

« Ответ #2 : 28-12-2014 15:50 » 

Проверка на активность методом Self.Active не совсем корректна.
Код: (Delphi)
FormMain.Active
Тоже самое даёт
Для этого надо смотреть как в дельфи реализовано свойство формы Active изнутри.
Код: (Delphi)
property Active: Boolean read FActive;
Не оно?
Записан
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #3 : 28-12-2014 17:11 » 

А условие LUserID.Caption = IntToStr(UserID) у тебя выполняется? По идее данное свойство все равно должно работать, оно привязано к сообщению WM_ACTIVATE
Записан
Shouldercannon
Постоялец

ru
Offline Offline

« Ответ #4 : 28-12-2014 19:59 » new

А условие LUserID.Caption = IntToStr(UserID) у тебя выполняется? По идее данное свойство все равно должно работать, оно привязано к сообщению WM_ACTIVATE
Тоже выполняется.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines