Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2009, 16:57   #11
Nester
Форумчанин
 
Аватар для Nester
 
Регистрация: 22.10.2008
Сообщений: 127
Радость

s.Creator По поводу почему я не использую стандартный FormStyle=fsStayOnTop
можно почитать тут http://www.programmersforum.ru/showthread.php?t=62864 у меня D7 и я использую регионы

а про сброс фокуса на Form1 при переключении кнопочками на панеле задач -это да такой касяк есть и как его устранить пока не знаю
Никто не знает больше чем не знаю я
Nester вне форума Ответить с цитированием
Старый 19.09.2009, 17:17   #12
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

На счет FormStyle=fsStayOnTop понял.
На чтет касяка еще немного посидел но так и не убил.
s.Creator вне форума Ответить с цитированием
Старый 19.09.2009, 17:41   #13
Nester
Форумчанин
 
Аватар для Nester
 
Регистрация: 22.10.2008
Сообщений: 127
По умолчанию

я так понимаю что когда мы клацаем на панеле задач приложение получает некое сообщение и сбрасывает фокус на Form1
а далее мы активируем своё приложение и в OnActivate оно и видит активной форму Form1

может нужно отловить WM_SetFocus и если ActForm='Form2' не устанавливать фокус на Form1
Х.З.

чёто не то наплёл

получает сообщение сбрасывает фокус на FORM1 и выполняет OnDeactivate

получается на момент входа в OnDeactivate фокус уже на Form1

что только не пробовал-МИСТИКА
почему так происходит ума не приложу
может чего спецы посоветуют.......
Никто не знает больше чем не знаю я

Последний раз редактировалось Stilet; 21.09.2009 в 09:45.
Nester вне форума Ответить с цитированием
Старый 20.09.2009, 11:52   #14
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от Nester Посмотреть сообщение
что только не пробовал-МИСТИКА
почему так происходит ума не приложу
может чего спецы посоветуют.......
Может поможет или направит следующее.
Немного покопался, накопал следующее:
Код:
procedure TApplication.WndProc(var Message: TMessage);
//.............
    with Message do
      case Msg of
//.............
        WM_ACTIVATEAPP:
          begin
            Default;
            FActive := TWMActivateApp(Message).Active;
            if TWMActivateApp(Message).Active then
            begin
              RestoreTopMosts;
              PostMessage(FHandle, CM_ACTIVATE, 0, 0)
            end
            else
            begin
              NormalizeTopMosts;
              PostMessage(FHandle, CM_DEACTIVATE, 0, 0);
            end;
          end;
//.................
        CM_ACTIVATE:
          if Assigned(FOnActivate) then FOnActivate(Self);
        CM_DEACTIVATE:
          if Assigned(FOnDeactivate) then FOnDeactivate(Self);
Вероятно NormalizeTopMosts; и убирает формы с переднего плана.
Событие OnActivate(Self) выполняется не сразу по приходу команды ( сообщения ) WM_ACTIVATEAPP:.
При нажатии кнопки другой программы на панели задач в это время, предполагаю, программе передается еще ряд сообщений, связанных с переходом фокуса на панель задач, где кнопка нашего приложения сперва выбрана, а потом уже обработка нажатия кнопки другого приложения.
-----------
Дописал
Код:
procedure TForm1.FormActivate(Sender: TObject);
begin
  if Application.Active then
    Memo1.Lines.Add('TForm1.FormActivate '+Screen.ActiveForm.Name);
end;
Оказывается Form1 активируется еще до строки
Код:
FActive := TWMActivateApp(Message).Active;

Последний раз редактировалось s.Creator; 20.09.2009 в 12:16.
s.Creator вне форума Ответить с цитированием
Старый 21.09.2009, 09:25   #15
Nester
Форумчанин
 
Аватар для Nester
 
Регистрация: 22.10.2008
Сообщений: 127
Радость

Почти решил проблему
но остался один глюк (но не всегда) при деактивации приложения
form2 (подсвечена) как будно она активна-хотя это не так
но для меня это не существенно так как формы будут отрисовываться вручную и этого касяка видно не будет
Вложения
Тип файла: rar StayOnTop1.rar (8.6 Кб, 31 просмотров)
Никто не знает больше чем не знаю я
Nester вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StayOnTop RIO Общие вопросы Delphi 6 17.01.2008 15:19