Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

При закрытии программы - минимизация в трей   Найти похожие ветки 

 
Chaser ©   (2005-12-19 11:54) [0]

Требуется, чтобы в программе при нажатии на крестик (системные кнопки, кнопка "Сlose"), программа не закрывалась, а минимизировалась в трей.

Я делаю так:

procedure TForm1.WMSYSCOMMAND(var msg: TMessage);
begin
inherited;
if (msg.WParam=SC_MINIMIZE) or (msg.WParam=SC_CLOSE)
then HideMainForm; //  минимизируемся
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if cancl=true
then CanClose:=true;
if cancl=false
then CanClose:=false;
end;

Соответственно в программе есть кнопка "Выход", и в ней написано:

cancl:=true;

Но при выключении компьютера, он не выключается как раз потому, что программа не может закрыться.

Причем если делать без "CanClose" (вообще убрать процедуру "FormCloseQuery"), то сообщение "(msg.WParam=SC_CLOSE)" почему-то не обрабатывается.

Как это исправить?
Или есть другие способы минимизации в трей?


 
Leonid Troyanovsky ©   (2005-12-19 12:52) [1]


> Chaser ©   (19.12.05 11:54)  


> if (msg.WParam=SC_MINIMIZE) or (msg.WParam=SC_CLOSE)

if ((msg.WParam and $FFF0) = SC_MINIMIZE ) or ((msg.WParam and $FFF0)..

> if cancl=true
> then CanClose:=true;
> if cancl=false
> then CanClose:=false;

CanClose := cancl;

> Как это исправить?

При обработке WM_QUERYENDSESSION установить cancl := True;
{msg.Result := LResult( True )}

--
Regards, LVT.


 
Chaser ©   (2005-12-19 13:59) [2]


> > Chaser ©   (19.12.05 11:54)  
>
>
> > if (msg.WParam=SC_MINIMIZE) or (msg.WParam=SC_CLOSE)
>
> if ((msg.WParam and $FFF0) = SC_MINIMIZE ) or ((msg.WParam
> and $FFF0)..
>
> > if cancl=true
> > then CanClose:=true;
> > if cancl=false
> > then CanClose:=false;
>
> CanClose := cancl;
>
> > Как это исправить?
>
> При обработке WM_QUERYENDSESSION установить cancl := True;
>
> {msg.Result := LResult( True )}
>
> --
> Regards, LVT.


if ((msg.WParam and $FFF0) = SC_MINIMIZE)
                            or ((msg.WParam and $FFF0)=SC_CLOSE)
then HideMainForm; //  минимизируемся

Все равно программа закрывается, а не минимизируется.



>При обработке WM_QUERYENDSESSION установить cancl := True;
>{msg.Result := LResult( True )}



Можно подробнее?


 
Leonid Troyanovsky ©   (2005-12-19 14:11) [3]


> Chaser ©   (19.12.05 13:59) [2]

> if ((msg.WParam and $FFF0) = SC_MINIMIZE)

> Все равно программа закрывается, а не минимизируется.


Дык, это лишь первая неточность.

> >При обработке WM_QUERYENDSESSION установить cancl := True;
> Можно подробнее?


Сделать обработчик сообщения WM_QUERYENDSESSION, в котором:


 cancl := True;
 inherited;

--
Regards, LVT.


 
I am   (2005-12-19 14:17) [4]

Не изобретай велосипед. Воспользуйся комонентом CoolTrayIcon



Страницы: 1 вся ветка

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.06 c
1-1139373604
Disciple2005
2006-02-08 07:40
2006.03.12
Delphi & Word


15-1139902769
kaZaNoVa
2006-02-14 10:39
2006.03.12
Скриншот Полноокранной DOS-программы


15-1140406651
никак не получается
2006-02-20 06:37
2006.03.12
таблицы


2-1140962453
Jet
2006-02-26 17:00
2006.03.12
Определение пути до папки через OpenDialog


2-1140886598
Radagast
2006-02-25 19:56
2006.03.12
Invalid floating point operation