Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 113, средняя оценка - 4.96
Dream
156 / 153 / 2
Регистрация: 26.07.2008
Сообщений: 549
#1

Запрет на закрытие программы. - Delphi

23.10.2008, 23:06. Просмотров 14782. Ответов 10
Метки нет (Все метки)

Подскажите, пожалуйста.

Как сделать так, чтобы при нажатие на крестик в правом верхнем углу окна программы, программа бы не закрывалась?
Совсем убирать кнопку не нужно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2008, 23:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запрет на закрытие программы. (Delphi):

закрытие программы - Delphi
Доброго времени суток. Проблема в следующим. Запускаю программу, работаю, потом закрываю. Она закрывается, но не полностью, в процессах она...

Закрытие программы Delphi без видимых на то причин - Delphi
Уважаемые форумчане, возникла проблема. Написал программу (см. код ниже). После запуска спокойно ждет ввода данных и после закрывается....

DELPHI закрытие программы - Delphi
Ничего не могу понять, написал код программы, но в конце выдает ошибку на закрытие, может кто подскажет в чем дело??? unit Oborot...

Закрытие своей программы - Delphi
Если запущенна моя программа (кот) то при ее работе запустили программу (собака) моя программа (кот) должна закрыться! Как такое можно...

Закрытие своей программы - Delphi
Запускаю exe файл и хочу закрыть свою программу, но как понимаю, пока тот exe не завершиться, моя программа не закроется? var ...

Ошибка при закрытие программы - Delphi
Выдает каждый раз эту ошибку, до этого как то выдавала, но как-то через раз, из-за чего это может быть вызвано? procedure...

10
Anatol_rus
12 / 12 / 2
Регистрация: 23.10.2008
Сообщений: 33
24.10.2008, 00:20 #2
в эвенте формы в событии OnClose напиши:
Application.Run;

Вот как ет выгледит:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Run;
end;

И будет тебе счастье
0
Arriba
253 / 169 / 6
Регистрация: 17.10.2008
Сообщений: 770
24.10.2008, 03:04 #3


Вы меня конечно извиняйте, но дело получается так, если в вашем случае создать кнопку с кодом Form1.close; закрытия программы, то всё будет прекрасно!!! Но если разок 40 нажать на крестик вверху программы, прога зависает...(попробуйте понажимайте). Исправления извиняйте не придумал. Есть конечно вариант сделать вдобавок неактивным крестик сверху.
0
Dream
156 / 153 / 2
Регистрация: 26.07.2008
Сообщений: 549
24.10.2008, 07:05  [ТС] #4
Цитата Сообщение от Arriba Посмотреть сообщение
Вы меня конечно извиняйте, но дело получается так, если в вашем случае создать кнопку с кодом Form1.close; закрытия программы, то всё будет прекрасно!!! Но если разок 40 нажать на крестик вверху программы, прога зависает...(попробуйте понажимайте). Исправления извиняйте не придумал. Есть конечно вариант сделать вдобавок неактивным крестик сверху.
Согласен с Вами.

Подскажите, как сделать неактивным крестик.
0
Arustarh Dark
57 / 56 / 4
Регистрация: 08.06.2008
Сообщений: 243
24.10.2008, 07:16 #5
А что, событие OnCloseQuery уже не устраивает?
1
Dream
156 / 153 / 2
Регистрация: 26.07.2008
Сообщений: 549
24.10.2008, 12:12  [ТС] #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Нашел решение проблемы.
Выкладываю, может кому пригодится.

Этот код просто не дает закрыть программу через крестик:

Код
 
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=False;
end;
Этот код выдает запрос на закрытие:

Код
 
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if messagedlg('Реально желаешь закрыть прогу?',
mtconfirmation, [mbYes, mbNo], 0) = mrNo then
canclose := false;
end;
На это тему закрываю.
Спасибо мне огромное.
4
Ranger
9 / 9 / 0
Регистрация: 03.10.2008
Сообщений: 293
22.03.2009, 13:55 #7
КАК СДЕЛАТЬ КРЕСТИК НЕАКТИВНЫМ?
1
Somebody
2792 / 1603 / 148
Регистрация: 03.12.2007
Сообщений: 4,200
Завершенные тесты: 3
22.03.2009, 18:45 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Неактивный крестик и Alt+F4 вместе с ним (в системном меню "Закрыть" остаётся):
Код
SetClassLong(Handle, GCL_STYLE, GetClassLong(Handle, GCL_STYLE) or CS_NOCLOSE);
Неактивный крестик и удаление из системного меню (Alt+F4 остаётся):
Код
DeleteMenu(GetSystemMenu(Handle, false), SC_CLOSE, MF_BYCOMMAND);
И в любом случае для перерисовки после этого:
Код
SetWindowPos(Handle, 0, 0, 0, 0, 0,
  SWP_FRAMECHANGED or SWP_NOMOVE or SWP_NOSIZE or SWP_NOZORDER);
3
alexander-rsh
1 / 1 / 0
Регистрация: 24.03.2009
Сообщений: 9
24.03.2009, 15:53 #9
в OnClose прописать:
action:=caNone;
0
pro_512
9 / 9 / 1
Регистрация: 15.12.2009
Сообщений: 85
27.02.2010, 15:18 #10
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button1Click(Sender: TObject);
var
 SysMenu: HMenu;
begin
 SysMenu:=GetSystemMenu(Handle, False);
 Windows.EnableMenuItem(SysMenu ,SC_CLOSE, MF_DISABLED Or MF_GRAYED);
end;
1
саша40
73 / 270 / 25
Регистрация: 14.08.2012
Сообщений: 2,466
30.08.2012, 17:20 #11
просто свойство BorderIcon->SystemMeny поменять на false и креста ваще нет. А если ваще чтобы прогу можно было закрыть только по команде Form1.Close то надо заблокировать паель задач
0
30.08.2012, 17:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.08.2012, 17:20
Привет! Вот еще темы с ответами:

Как отследить закрытие программы - Delphi
Подскажите пожалуйста как можно отследить закрытие программы(или процесса) из своей программы. WaitForSngleObject останавливает...

Запрет на закрытие программы - C++ WinAPI
Добрый день, форумчане. Мне необходимо запретить пользователю закрывать моё приложение через диспетчер задач и другими способами. Т.е....

Запрет на закрытие формы - MS Access
Здравствуйте, подскажите пожалуйста, как реализовать запрет на закрытие формы: есть форма заказа, необходимо сделать так, чтобы форма...

Запрет на закрытие формы - C++ Builder
Код на запрет закрытие формы void __fastcall TForm1::Button1Click(TObject *Sender) { HMENU MenuHandle = GetSystemMenu(Handle,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.