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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2010, 21:03   #1
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
Вопрос Определить, был ли переход на любое другое окно

Здравствуйте. Помогите пожалуйста, как можно определить переходил ли человек на другие окна с моего приложения(к примеру переключился на браузер, или открыл пэйнт)? Имена процессов которые он использовал мне не нужны. Просто сам факт(ну тоесть переформулируя более кодерским языком - было ли расфокусировано окно)
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 13.12.2010, 21:09   #2
Я_и
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 37
По умолчанию

Попробуй функцию
Код:
Form1.Focused
Я_и вне форума Ответить с цитированием
Старый 13.12.2010, 21:11   #3
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Если я правильно понял - нужно отловить событие потери фокуса формой ?

Код:
  protected
    procedure LastFocus(var Mess : TMessage); message WM_ACTIVATE;
    ...
    ...

procedure TForm1.LastFocus(var Mess : TMessage);
Begin
  if  Mess.wParam = WA_INACTIVE then
    begin
    // потеря  фокуса
    ....
    end
    else
    begin
    // восстановление  фокуса
    ....
    end;
  // продолжаем стандартный обработчик
  inherited;
end;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT

Последний раз редактировалось Kotofff; 13.12.2010 в 21:13.
Kotofff вне форума Ответить с цитированием
Старый 13.12.2010, 21:16   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

а Form.OnDeactivate не устраивает?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.12.2010, 21:29   #5
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Цитата:
а Form.OnDeactivate не устраивает?
А как этот обработчик работает? Просто не пойму, при каких условиях он срабатывает...
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 13.12.2010, 21:31   #6
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Цитата:
Если я правильно понял - нужно отловить событие потери фокуса формой ?
Ну да, даже больше - всем приложением(т.е. если у меня может быть 10 окон в моем Application, и если юзер решил уйти из апликэйшна, то программа должна знать об этом.)

PS: извиняюсь за пост, вместо того чтобы добавить в предыдущий, создал новый случайно...
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 14.12.2010, 06:20   #7
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Если для всего приложения, то так:
Код:
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure AppDeactivate (Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnDeactivate := Form1.AppDeactivate;
end;

procedure TForm1.AppDeactivate (Sender: TObject);
begin
  Form1.Caption := TimeToStr (Now);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MessageDlg ('asdfgadsfasdf', mtInformation, [mbOK], -1);
end;
Sibedir вне форума Ответить с цитированием
Старый 14.12.2010, 10:13   #8
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

А что это? Просто при нажатии на кнопку появляется мессага...
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 14.12.2010, 10:17   #9
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Ну да, а при потере приложением фокуса неняется Caption. Это сложно заметить.
Sibedir вне форума Ответить с цитированием
Старый 14.12.2010, 15:46   #10
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Класс, спасибо огромное))) с утра торопился и бегло просмотрел приложение. Теперь все понятно. Спасибо) Круть)
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход на веб страницу был отменён Bright-rider Работа с сетью в Delphi 0 19.10.2010 08:41
Передать нажатия клавиш в другое окно antonq Win Api 1 25.04.2009 12:31
Кнопки-ссылки на другое окно Slava13 Общие вопросы Delphi 10 12.11.2008 08:52
Как передать параметр в другое(модальное) окно? kiber0net0 Общие вопросы Delphi 3 21.09.2008 13:03
Изменить имя и уничтожить другое окно! UnD)eaD)Snake Win Api 2 22.07.2007 14:01