![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мастера, помогите советом! [D6, WinXP]
Barman © (2003-01-02 11:08:00)С Новым годом всех!
У меня такой вопрос: как сделать так, чтобы по нажатию на кнопку "закрыть" (наверху с крестиком, не знаю как правильно ее назвать...) программа не закрывалась?
Пробовал писать в событии OnCloseQuery вот так:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:= False;
Form1.Hide;
end;
Но тогда Windows не может завершить свою работу, если работает программа! Я понимаю, что надо ловить каким-то образом сообщение о закрытии, но я не знаю как :-(
Mihey (2003-01-02 22:41:00) [1]Убрать кнопку нафиг (или ты прикол какой бацаешь?)!
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;
lamachok (2003-01-02 21:58:00) [2]вот вот надо обрабатывать onclose
alvin (2003-01-02 18:31:00) [3]Попробуй так :
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caNone;
end;
Должно работать
Song (2003-01-02 17:56:00) [4]Return Values
If an application can terminate conveniently, it should return TRUE; otherwise, it should return FALSE.
Barman (2003-01-02 17:22:00) [5]Хелп посмотрел. Но ничего не понял :-(
Не связывался я с сообщениями никогда, поэтому совета и прошу...
Song (2003-01-02 15:35:00) [6]Надо ещё результат от сообщения возвращать. См. в хэлпе что нужно вернуть.
Barman (2003-01-02 14:45:00) [7]Все равно не получается. Пишу следующее:
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 13:45:00) [8]Procedure IsWindowsShutDown(Var Msg:TMessage); message WM_QUERYENDSESSION;
и далее пишешь обработчик в процедуре IsWindowsShutDown
Barman (2003-01-02 12:43:00) [9]А как? Мне стыдно, но я не умею :-(
Можно пример или ссылку, где можно было бы это посмотреть?
Anatoly Podgoretsky (2003-01-02 11:13:00) [10]Обрабатывай сообщение WM_QUERYENDSESSION