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