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

Вниз

Мастера, помогите советом!   Найти похожие ветки 

 
Barman ©   (2003-01-02 11:08) [0]

С Новым годом всех!

У меня такой вопрос: как сделать так, чтобы по нажатию на кнопку "закрыть" (наверху с крестиком, не знаю как правильно ее назвать...) программа не закрывалась?
Пробовал писать в событии OnCloseQuery вот так:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:= False;
Form1.Hide;
end;

Но тогда Windows не может завершить свою работу, если работает программа! Я понимаю, что надо ловить каким-то образом сообщение о закрытии, но я не знаю как :-(


 
Anatoly Podgoretsky ©   (2003-01-02 11:13) [1]

Обрабатывай сообщение WM_QUERYENDSESSION


 
Barman ©   (2003-01-02 12:43) [2]

А как? Мне стыдно, но я не умею :-(
Можно пример или ссылку, где можно было бы это посмотреть?


 
Song ©   (2003-01-02 13:45) [3]

Procedure IsWindowsShutDown(Var Msg:TMessage); message WM_QUERYENDSESSION;

и далее пишешь обработчик в процедуре IsWindowsShutDown


 
Barman ©   (2003-01-02 14:45) [4]

Все равно не получается. Пишу следующее:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:= False;
Hide;
end;

Procedure TForm1.IsWindowsShutDown(var Message : TMessage);
Begin
Application.Terminate;
End;

Теперь программа закрывается, но толку от этого нет, т.к. Windows работу все равно почему-то не завершает :-( Где я не прав?


 
Song ©   (2003-01-02 15:35) [5]

Надо ещё результат от сообщения возвращать. См. в хэлпе что нужно вернуть.


 
Barman ©   (2003-01-02 17:22) [6]

Хелп посмотрел. Но ничего не понял :-(
Не связывался я с сообщениями никогда, поэтому совета и прошу...


 
Song ©   (2003-01-02 17:56) [7]

Return Values

If an application can terminate conveniently, it should return TRUE; otherwise, it should return FALSE.


 
alvin   (2003-01-02 18:31) [8]

Попробуй так :
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caNone;
end;

Должно работать


 
lamachok   (2003-01-02 21:58) [9]

вот вот надо обрабатывать onclose


 
Mihey   (2003-01-02 22:41) [10]

Убрать кнопку нафиг (или ты прикол какой бацаешь?)!

procedure TForm1.Button1Click(Sender: TObject);
var
hwndHandle : THANDLE;
hMenuHandle : HMENU;
begin
hwndHandle := FindWindow(nil, "Untitled - Notepad");
if (hwndHandle <> 0) then begin
hMenuHandle := GetSystemMenu(hwndHandle, FALSE);
if (hMenuHandle <> 0) then
DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
end;
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.013 c
4-38655
Ozone
2003-01-05 07:59
2003.02.13
Есть файл?


3-38030
Cossys
2003-01-28 18:20
2003.02.13
Специалисты SQL, хэлп плиз!


14-38468
Alexey_B
2003-01-30 11:38
2003.02.13
Delphi 4 & WinXP


1-38174
alina
2003-02-04 17:24
2003.02.13
Необходимо как-то ограничить память используемую программой


3-38034
JibSkeart
2003-01-27 13:22
2003.02.13
RAISERROR какбудто игнорируется !!!