![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно отследить минимизацию окна программы
AlexR © (2004-07-22 02:35:00)Можно ли как-то отследить минимизацию окна программы?
superedward (2004-07-23 07:06:00) [1]что и использую при минимизации именно окна, а не приложения:
ловишь сообщение wm_syscommand:
procedure WMGetSysCommand(var Msg : TMessage); message WM_SYSCOMMAND;
код:
procedure TForm1.WMGetSysCommand(var Msg :TMessage);
begin
case Msg.wParam of
SC_MINIMIZE: ProcedureOnMinimize;
SC_MAXIMIZE: ProcedureOnMaximize;
SC_RESTORE : ProcedureOnRestore;
SC_CLOSE : ProcedureOnClose;
else inherited;
end;
end;
это если хочешь полностью заменить обработчики
работает как при нажатии кнопок на Caption, так и в меню окна
Palladin (2004-07-22 19:19:00) [2]
> RDen (22.07.04 06:43)
А ты [2] читал прежде чем вынести на обозрение свой супер оригинальный и неповторимый (а, кстати, может быть и гениальный с твоей точки зрения) вариант решения проблемы...
RDen (2004-07-22 06:43:00) [3]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure AppMinimize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
var i:integer;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.AppMinimize(Sender: TObject);
begin
i:=i+1;
Application.Minimize;
form1.caption:='Приложение было свёрнуто '+inttostr(i) +' раз';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=0;
Application.OnMinimize := AppMinimize;
end;
AlexR (2004-07-22 03:13:00) [4]
> akvilon © (22.07.04 02:56) [3]
> перехватывай WM_MINIMAZE
Да, я сам думал что должно быть что-то вроде этого но такого нет.
Есть wm_size, но он как-то криво срабатывает. Для minimized не срабатывает совсем.
akvilon (2004-07-22 03:13:00) [5]да, это я чё-то .... такого и нету совсем :)
Palladin (2004-07-22 03:01:00) [6]чаво чаво пирехватывай?
akvilon (2004-07-22 02:56:00) [7]перехватывай WM_MINIMAZE
Palladin (2004-07-22 02:48:00) [8]Хотя, это для всего приложения... Если нужно для отдельного окна то WM_SIZE+F1
Palladin (2004-07-22 02:39:00) [9]Палитра компонентов\Additional\ApplicationEvents
OnMinimize