![]() |
|
|
Регистрация | << Правила форума >> | 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; If end Then begin; |
#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. |