Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/114: Рейтинг темы: голосов - 114, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 03.03.2009
Сообщений: 19

Запрос о закрытии программы

30.06.2009, 14:28. Показов 21808. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать в делфях программу при закрытии которой вылетало бы окно с запросом на закрытие?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.06.2009, 14:28
Ответы с готовыми решениями:

Ошибка при закрытии программы.
При закрытии окна программы (выход) иногда выскакивает сообщение (фото прикреплено). Подскажите, пожалуйста, в каком направлении копать.

Подтверждение при закрытии программы
Есть кнопка на форме,которая отвечает за закрытие программы.Хочу,что при закрытие программы на крестик и кнопку,появлялся MessageBox. ...

Удаление файла при закрытии программы
Програма создает текстовый файл, при закрытии самой программы она должна его удалить, в принципе она его и удаляет на события OnClose или...

8
 Аватар для Nikfel
60 / 32 / 15
Регистрация: 30.05.2009
Сообщений: 234
30.06.2009, 14:37
Лучший ответ Сообщение было отмечено как решение

Решение

Примерно так:
Delphi
1
2
3
4
5
6
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var DlgRes:integer;
begin
DlgRes := MessageBox(form1.Handle, 'Закрыть программу?', 'Сообщение', MB_YESNO or MB_ICONQUESTION);
if DlgRes = ID_NO then action :=caNone;
end;
3
 Аватар для Jazon_deenAlt
4117 / 999 / 191
Регистрация: 09.04.2009
Сообщений: 4,223
30.06.2009, 14:43
так например(тут будет ес и ноу):
Delphi
1
2
3
4
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := MessageDlg('Вы действительно хотите выйти из программы?',mtConfirmation,[mbYes,mbNo],0)=IDYes
end;
либо вот так(тут да и нет):
Delphi
1
2
3
4
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := MessageBox(Application.Handle,'Вы действительно хотите выйти из программы?','Предупреждение',MB_YESNO)=ID_YES;
end;
1
 Аватар для kentaw
421 / 130 / 33
Регистрация: 24.02.2009
Сообщений: 1,122
30.06.2009, 14:53
Delphi
1
CanClose := MessageBox(Application.Handle,'Вы действительно хотите выйти из программы?','Подтверждение',MB_YESNO)=ID_YES;
1
RJ
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 55
17.06.2013, 03:43
Здравствуйте! Уважаемые знатоки нужна Ваша помощь.

Использую такой код:

Delphi
1
2
3
4
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=MessageDlg ('Действительно выйти?',mtConfirmation,[mbYes,mbNo],0)=mrYes
end;
Так вот он выдает окно с вопросом, но если нажмать кнопку "нет" - все равно приложение закрывается как будто я нажмал "Да".
В чем дело? Может я чет не то делаю?

Полный код формы вот:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls, ShellAPI;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Image2: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Image1: TImage;
    Label8: TLabel;
    Label9: TLabel;
    Button8: TButton;
    procedure Label4Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure MMouseEnter(Sender: TObject);
    procedure MMouseLeave(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Label8Click(Sender: TObject);
    procedure OnMouseEnter(Sender: TObject);
    procedure OnMouseLeave(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  t: integer;
implementation
 
uses Unit2, Unit3, Unit4, Unit6, Unit5, Unit8, Unit9;
 
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
//отцентровка и анимация создания формы
//отцентровка
Left := (Screen.Width - Width) div 2;
Top := (Screen.Height - Height) div 2;
//анимация формы при открытии
AnimateWindow(handle, 500, AW_BLEND or AW_ACTIVATE);
end;
 
procedure TForm1.Label4Click(Sender: TObject);
begin
//открытие в браузере сайта университета
ShellExecute(handle,'open','http://eidmu.zp.ua/ ',nil,nil,SW_SHOW);
end;
 
procedure TForm1.Button7Click(Sender: TObject);
begin
{закрытие приложения + полное уничтожение с очисткой памяти
и завершением всех его процессов}
Form1.Close;
Application.Terminate;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
//скрытие гланой формы и создание Form3 + открытие Form3 на экран
AnimateWindow(handle, 400, AW_BLEND or AW_HIDE);
Form1.Hide;
Form3:=TForm3.Create(Application);
Form3.Show;
end;
 
procedure TForm1.MMouseEnter(Sender: TObject);
begin
//изменение цвета Label4 при наведении на него курсора мыши
Label4.Font.Color:=clRed;
end;
 
procedure TForm1.MMouseLeave(Sender: TObject);
begin
//изменение цвета Label4 при убирании с него курсора мыши
Label4.Font.Color:=clGreen;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
//скрытие гланой формы и создание Form4 + открытие Form3 на экран
AnimateWindow(handle, 400, AW_BLEND or AW_HIDE);
Form1.Hide;
Form4:=TForm4.Create(Application);
Form4.Show;
end;
 
procedure TForm1.Button6Click(Sender: TObject);
begin
//скрытие гланой формы и создание Form6 + открытие Form3 на экран
AnimateWindow(handle, 400, AW_BLEND or AW_HIDE);
Form1.Hide;
Form6:=TForm6.Create(Application);
Form6.Show;
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
//скрытие гланой формы и создание Form5 + открытие Form3 на экран
AnimateWindow(handle, 400, AW_BLEND or AW_HIDE);
Form1.Hide;
Form5:=TForm5.Create(Application);
Form5.Show;
end;
 
procedure TForm1.Label8Click(Sender: TObject);
begin
//открытие в браузере сервера университета
ShellExecute(handle,'open','http://kpu.eidmu.zp.ua/ ',nil,nil,SW_SHOW);
end;
 
procedure TForm1.OnMouseEnter(Sender: TObject);
begin
//изменение цвета Label4 при наведении на него курсора мыши
Label8.Font.Color:=clRed;
end;
 
procedure TForm1.OnMouseLeave(Sender: TObject);
begin
//изменение цвета Label4 при убирании с него курсора мыши
Label8.Font.Color:=clGreen;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//анимация закрытия формы + полное ее уничтожение с освобождение памяти
AnimateWindow(handle, 400, AW_BLEND or AW_HIDE);
Action := caFree;
end;
 
procedure TForm1.Button8Click(Sender: TObject);
begin
 AboutBox.ShowModal;
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
//скрытие гланой формы и создание Form5 + открытие Form3 на экран
AnimateWindow(handle, 400, AW_BLEND or AW_HIDE);
Form1.Hide;
Form9:=TForm9.Create(Application);
Form9.Show;
end;
 
 
 
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose:=MessageDlg ('Действительно выйти?',mtConfirmation,[mbYes,mbNo],0)=mrYes
end;
 
end.
0
angstrom
17.06.2013, 04:41
Цитата Сообщение от RJ Посмотреть сообщение
В чем дело? Может я чет не то делаю?
Конечно, залезли со своим вопросом в чужую тему. Создавайте свою.
RJ
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 55
17.06.2013, 04:45
Цитата Сообщение от angstrom Посмотреть сообщение
Конечно, залезли со своим вопросом в чужую тему. Создавайте свою.
Я наоборот хотел что б не плодились одни и те же темы на форуме. Вопрос об одном и том же..... практически.

Так что свою тему клепать, Администрация?
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
17.06.2013, 08:44
Потому что у тебя после обработчика закрытия идет команда на завершение приложения без вариантов, которая там нафиг не нужна:
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button7Click(Sender: TObject);
begin
{закрытие приложения + полное уничтожение с очисткой памяти
и завершением всех его процессов}
Form1.Close;
Application.Terminate;
end;
1
RJ
1 / 1 / 0
Регистрация: 10.05.2012
Сообщений: 55
17.06.2013, 11:23
Цитата Сообщение от FIL Посмотреть сообщение
Потому что у тебя после обработчика закрытия идет команда на завершение приложения без вариантов, которая там нафиг не нужна:
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button7Click(Sender: TObject);
begin
{закрытие приложения + полное уничтожение с очисткой памяти
и завершением всех его процессов}
Form1.Close;
Application.Terminate;
end;
Решаю проблему в этой теме. Там дальнейшая проблема. Посмотри, если есть возможность.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.06.2013, 11:23
Помогаю со студенческими работами здесь

Исключение 0xc0000417 при закрытии программы с thread
Помогите люди добрые! Возникает "Исключение неизвестное программное исключение (0xc0000417) в приложении по адресу такому-то" при...

Поиск файлов. При закрытии программы - зависания.
подскажите что не так. первый раз при входе в windows выполняю поиск - ищет довольно долго. второй раз поиск - быстро ищет и все...

При закрытии программы сохранялись в ней изменения
Не знаю как поточнее выразиться, ну вобщем такая ситуация: У меня есть программа(*.exe) и файл(*.ini). При запуске из *.ini данные...

При закрытии страницы выдает запрос
Помогите найти наработку такого скрипта, чтоб при закрытии страницы выдавался запрос "вы действительно хотите уйти со страницы?"...

Запрос подтверждения при закрытии формы
Программа при закрытии делает запрос, действительно ли нужно закрыть форму: если "да", то закрывает, если "нет", то...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru