Главная страница
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.046 c
2-1140436709
Muha89
2006-02-20 14:58
2006.03.12
прокрутка.


15-1140314092
Жду ответа
2006-02-19 04:54
2006.03.12
База или файл?


2-1140535462
zxcv
2006-02-21 18:24
2006.03.12
как освобождать память, выделенную под массив


2-1140918545
HiTTeR
2006-02-26 04:49
2006.03.12
Помогите в решении задачи


4-1135076384
Grant
2005-12-20 13:59
2006.03.12
Поиск временного каталога.