Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
8-1126260166
palgen
2005-09-09 14:02
2006.03.12
Если стоят две карты(TVTuner) с видеовходом ...


2-1140698483
K_Lock
2006-02-23 15:41
2006.03.12
Генератор. (IB6)


1-1139210575
MetalFan
2006-02-06 10:22
2006.03.12
проблема с кодировкой при копированиии в буфер


9-1111792617
Yegorchic
2005-03-26 02:16
2006.03.12
Русская документ по GLScene


2-1140769646
unlink
2006-02-24 11:27
2006.03.12
сравнение методов сортировки




   Наверх