Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
5 / 5 / 2
Регистрация: 25.10.2015
Сообщений: 236

Разрешение на закрытие формы

29.01.2016, 09:46. Показов 1377. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Работает, но не корректно при нажатии на форме ButtonOK тоже спрашивает разрешение.

А я хочу что бы это работало только при нажатии на крестик (Х)

FMode = 1 -создание

FMode = 2 -редактирование

Delphi
1
2
3
4
5
6
7
8
procedure TContractDlg.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  with Gate do
  if (FMode<>0)  then
    if MessageDlg('Закрыть форму без сохранения изменений?', mtConfirmation, [mbYes, mbNo], 0) = mrNo
    then CanClose := False;      
end;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.01.2016, 09:46
Ответы с готовыми решениями:

MessageDlg на закрытие формы
На create сделала вот такое сообщение if MessageDlg ('БД не найдена', mtCustom, , 0) = mrOK then close; Но форма после этого не...

Закрытие формы на редактирование (автоматом)
Добрый день, подскажите как лучше реализовать данный функционал. Есть форма dbgrideh и база данных на Oracle. Необходимо чтоб после того...

Закрытие формы
Что нужно сделать стобы При нажатии на CheckBox, нельзя было закрыть форму.

3
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
29.01.2016, 10:39
Лучший ответ Сообщение было отмечено krapotkin как решение

Решение

Выстави для кнопки ModalResult -> mrOK и проверяй его:
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if ModalResult <> mrOK then
    CanClose := MessageDlg('Закрыть форму без сохранения изменений?', mtConfirmation, [mbYes, mbNo], 0) = mrYes;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Close;
end;
Добавлено через 4 минуты
или еще проще:
Delphi
1
  CanClose := (ModalResult = mrOK) or (MessageDlg('Закрыть форму без сохранения изменений?', mtConfirmation, [mbYes, mbNo], 0) = mrYes);
1
 Аватар для notsliva
15 / 15 / 7
Регистрация: 25.06.2012
Сообщений: 95
29.01.2016, 16:48
А что там в клике по ButtonOK, Close() вызывается?
Я бы завёл в private класса формы AllowClose: Boolean, в OnShow формы давал бы ей False, а когда нужно True. И в OnCloseQuery делал бы CanClose := AllowClose
0
 Аватар для MajentoDL
10 / 12 / 2
Регистрация: 01.09.2015
Сообщений: 105
30.01.2016, 16:54
Сделай форму не модальной
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.01.2016, 16:54
Помогаю со студенческими работами здесь

Разрешение экрана... и позиционирование содержимого формы
Люди добрые, сами мы не местные... подскажите, как узнать текущее разрешение экрана, и соответственно сколько пикселей доступно по Х и...

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

Как запретить закрытие формы
Вот некак не получается запретить закрытье формы. Пробовал: Onclosequery() // ... CanClose:=false;При комптляций работает а когда...

Вызов модальной формы из модальной, нужно:закрытие последней и не закрытие первой.
1. Вызываю модальную форму из главной формы (немодальной). 2. Вызываю другую модальную форму из первой (п.1) модальной формы. 3....

Разрешить закрытие формы при условии, что все другие формы закрыты
Нужно создать событие, при котором приложение не завершается, пока все формы не будут закрыты. private void frMain_FormClosing(object...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный отбор значения справочника
Maks 21.03.2026
Процедура ВодителиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка) / / Отключаем стандартную обработку (стандартное открытие формы выбора без фильтров) . . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru