Вниз
Скачать: CL | DM;

Как при нажатии на кнопку закрытия свернуть программу вместо выхо   Найти похожие ветки 

← →
Dmitry   (2004-11-29 23:27) [0]

Прописал в OnCloseQuery
CanClose := True;
Application.Minimize;
Но возникает проблема при выключении компьютера. Программа просто не хочет закрываться и Windows не выключает компьютер.
Помогите поборототь проблему.


← →
olookin ©   (2004-11-29 23:56) [1]

Что, если попробовать ловить сообщения системы, а именно, сообщения с параметром WM_QUERYENDSESSION или WM_ENDSESSION, и если таковое есть, то не делать CanClose:=true?


← →
olookin ©   (2004-11-30 00:17) [2]

Вот примерно как это работает в ответ на выбор "Завершить сеанс пользователя"...

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var m: TMsg;
   z: boolean;
begin
z:=GetMessage(m,form1.handle,0,0);
showmessage(inttostr(m.message));
 if m.message=512 then CanClose:=true else begin
 CanClose:=false; Application.Minimize; end;
end;

512 - это видимо код сообщения при завершении сеанса. Код на завершение работы не смотрел, но полагаю, что он покажется в showmessage при завершении работы винды.


← →
GrayFace ©   (2004-11-30 05:37) [3]

Надо ловить WM_SYSCOMMAND, а в нем SC_CLOSE.


← →
Defunct ©   (2004-11-30 07:31) [4]

> CanClose := True;

И что правда работает?


← →
TUser ©   (2004-11-30 09:53) [5]


>  Как при нажатии на кнопку закрытия свернуть программу вместо
> выхо [D7, WinXP]
>
> Dmitry   (29.11.04 23:27)  
> Прописал в OnCloseQuery
> CanClose := True;
> Application.Minimize;

В OnClose пиши Action:=caMinimize


← →
Alexander Panov ©   (2004-11-30 10:09) [6]


 public
   { Public declarations }
   procedure OnWM_SYSCOMMAND(var Message: TMessage); message WM_SYSCOMMAND;

procedure TForm1.OnWM_SYSCOMMAND(var Message: TMessage);
begin
 if Message.WParam and $FFF0 = SC_CLOSE then
 begin
   Application.Minimize;
   Message.Result := 0;
 end
 else inherited;
end;


← →
Александр Иванов ©   (2004-11-30 10:10) [7]

Проверять в onCloseQuery, если минимизирована - закрывать, иначе - минимизировать.


← →
Dmitry   (2004-11-30 14:26) [8]

Пример Александра Панова сработал замечательно! Спасибо всем за помощь!


← →
Alexander Panov ©   (2004-11-30 14:44) [9]

Dmitry   (30.11.04 14:26) [8]
Хочу заметить, что и Александр Иванов ©   (30.11.04 10:10) [7]сработает тоже замечателдьно.


← →
Dmitry   (2004-12-01 02:28) [10]

:) Что правда - то правда. Честно говоря я не увидел сообщения Александра Иванова. Обычно когда видишь исходный код, уже ничего другого заметить не способен. Даже руки как-то сами по себе к CTRL + C тянутся :)


← →
GrayFace ©   (2004-12-03 14:05) [11]

Александр Иванов ©   (30.11.04 10:10) [7] будет минимизировать приложение при завершении работы. Поэтому
Alexander Panov ©   (30.11.04 10:09) [6] лучше.


← →
GrayFace ©   (2004-12-03 14:10) [12]

А вот если делать, как Александр Иванов ©   (30.11.04 10:10) [7] в OnClose.



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

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



Память: 0.47 MB
Время: 0.021 c
1-1101760067
Dmitry
2004-11-29 23:27
2004.12.19
Как при нажатии на кнопку закрытия свернуть программу вместо выхо


8-1096008775
Lexer
2004-09-24 10:52
2004.12.19
Иконки для кнопок


1-1101978886
denis24
2004-12-02 12:14
2004.12.19
передача картинки из одного image в другой image


6-1097245773
P@$l-l0l-(
2004-10-08 18:29
2004.12.19
Sockets. Ошибка при подключении


4-1099593479
Ильичев С.А.
2004-11-04 21:37
2004.12.19
крах, перезапуск Explorer




   Наверх