![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |
|
#7
|
||||
|
||||
|
2) Когда ты ставишь в Parent рабочий стол, обработчик события формы скорее всего перестаёт получать сообщения. Хотя тут не уверен.
1) Лучше опиши суть задачи. Потому что может есть и другие методы, кроме WindowState:=wsMinimized. А как найти свою кнопку - можно попробовать намутить чего-нибуть с EnumChildWindows для таскбара, может прокатит. Последний раз редактировалось Bargest, 06.09.2011 в 00:39. |
|
#8
|
|||
|
|||
|
Цитата:
задача заключается в том, чтобы окно могло сворачиваться куда угодно и при этом оставалась возможность срубить и вернуть обратно кнопку в таск баре. |
|
#9
|
||||
|
||||
|
Ну так создай иконку в TrayBar-е, повесь на него Popop-menu для своей проги и не мучайся.
|
|
#10
|
|||
|
|||
|
что значит не мучайся? мне нужно сворачивать окно без заголовка на панель и в трей, а так же нужна возможность убирать с панели кнопку от этого окна. У меня всё есть, осталось только эту проблему решить
|
|
#11
|
||||
|
||||
|
Убирание с панели кнопки окна делается путем прятанья своего окна, aka
Код:
ShowWindow(Handle, SW_HIDE); |
|
#12
|
|||
|
|||
|
Цитата:
я разобрался сам с этим вопросом почитав всем известного Хакера ответ здесь http://www.delphisources.ru/forum/sh...ad.php?t=18304 думаю продолжение следует... |