![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здраствуйте.вопрос наверное уже нираз задавался,но поиск молчит.
нужно вобщем остановить таймер когда форма теряет фокус (т.е. когда я нажимаю на какоето другое приложение,или рабочий стол и тд), и запустить когда форма вновь находиться в фокусе. Думал что за это отвечаю события формы OnActivate и OnDеactivate.но как оказалось они действуют тока между форм одной программы. помогите пожалуйста ![]() |
|
#2
|
||||
|
||||
|
Так работает:
Код:
var i: Integer; procedure TForm1.Timer1Timer(Sender: TObject); begin if Form1.Handle = GetForegroundWindow Then begin inc(i); Label1.Caption:= IntToStr(i); end; end; |
|
#3
|
||||
|
||||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, AppEvnts;
type
TForm1 = class(TForm)
Label1: TLabel;
ApplicationEvents1: TApplicationEvents;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure ApplicationEvents1Activate(Sender: TObject);
procedure ApplicationEvents1Deactivate(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:=IntToStr(Tag);
Tag:=Tag+1;
end;
procedure TForm1.ApplicationEvents1Activate(Sender: TObject);
begin
Timer1.Enabled:=True;
end;
procedure TForm1.ApplicationEvents1Deactivate(Sender: TObject);
begin
Timer1.Enabled:=False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ApplicationEvents1.OnActivate:=ApplicationEvents1Activate;
ApplicationEvents1.OnDeactivate:=ApplicationEvents1Deactivate;
Timer1.Interval:=100;
Timer1.OnTimer:=Timer1Timer;
end;
end. |
|
#4
|
|||
|
|||
|
Да NumLock, то что надо!
зы а можно както сделать чтоб событие происходило также,только не при активации формы,а при активации определённого TabSheet'a ? |
|
#5
|
||||
|
||||
|
У закладок (TTabSheet) есть событие OnShow
|
|
#6
|
|||
|
|||
|
помогите пожалуйста решить одну из двух задачь (Delphi XE):
* вариант первый - нужно получить фокус, т.е форма должна стать активной, после чего процедура должна найти в таскбаре кнопку своей формы, которой она принадлежит и послать ей клик. Говорю сразу - WindowState := wsMinimized; здесь не катит, нужна только отправка клика кнопке в таскбаре; * вариант второй - имеется SetWindowLong(Handle, GWL_HWNDPARENT, GetDesktopWindow); но работает она не так, как надо, после первого выполнения всё срабатывает, но при следующих ничего не происходит, что и нужно пофиксить. Для того, чтобы было понятно что мне нужно - делаем две кнопки в форме, на первой будет выполняться SetWindowLong, а на второй сворачивание в трей, после разворачивания из трея опять тыкаем по первой кнопке и сравниваем с тем, что было при первом клике; Последний раз редактировалось x2088, 06.09.2011 в 00:06. |