10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
|
1 | |
Обработка нажатия кнопки "Отмена" стандартного диалога SaveDialog04.12.2013, 13:57. Показов 3238. Ответов 8
Метки нет Все метки)
(
При закрытии моего приложения я методом Application->MessageBox предлагаю пользователю сохранить данные. Если пользователь выбирает "ДА", то есть хочет сохраниться, то начинает работать компонент SaveDialog, открывая соответствующую форму сохранения файла. В этом диалоге две кнопки - "Сохранить" и "Отмена". С первой кнопкой все понятно, а вот если нажать "Отмену", то в результате данные не сохраняются и мое приложение закрывается, чего как раз и не хотелось бы.
Как добиться при нажатии кнопки "Отмена" (в диалоге сохранения файла) выхода из этого диалога в мое приложение без его закрытия, а только лишь с отменой процедуры сохранения.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
1
|
|
04.12.2013, 13:57 | |
Ответы с готовыми решениями:
8
Обработка нажатия клавиши "Enter"
Как завершить функцию после нажатия кнопки "Отмена" полностью?
|
Супер-модератор
![]() ![]() |
||||||
04.12.2013, 14:02 | 2 | |||||
Где именно? В OnClose, или в OnCloseQuery? Во втором случае еще можно отменить закрытие, в первом - уже нет...
1
|
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
||||||
04.12.2013, 14:44 [ТС] | 3 | |||||
Я делал в OnClose. Там тоже можно отменить закрытие приложения. Вот работающий код с использованием вашего примера.
0
|
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
|
|
04.12.2013, 15:08 | 4 |
Когда то тоже столкнулся с такой проблемой, на самом деле решение простое....
SaveDialog->Execute() возвращает либо true либо false отсюда просится всего одна строка записи if(SaveDialog->Execute()) { .....нужные операции.... } собственно к чему Вы уже сами и пришли)
0
|
Супер-модератор
![]() ![]() |
|
04.12.2013, 15:15 | 5 |
Но лучше не нарушать логики. Разрешать/отменять закрытие лучше именно в OnCloseQuery, для чего это событие и предназначено. А OnClose предназначено для выполнения некоторых действий уже тогда, когда стало ясно, что форму надо закрыть, и больше вопросов не возникнет.
0
|
UeArtemis
18 / 18 / 3
Регистрация: 23.09.2011
Сообщений: 205
|
|
31.05.2017, 16:19 | 6 |
Не сработает. Если закрыть диалог, не сохранив файл, то приложение закроется. А хотелось бы, чтобы не закрылось.
Добавлено через 9 минут Ну, возможно, это только с TFileSaveAs так.
0
|
Супер-модератор
![]() ![]() |
||||||
31.05.2017, 16:33 | 7 | |||||
И с TFileSaveAs это тоже не так. Прекрасно обрабатывается как нажатие на "Save" так и нажатие на "Cancel" в диалоге
0
|
UeArtemis
18 / 18 / 3
Регистрация: 23.09.2011
Сообщений: 205
|
||||||
31.05.2017, 16:47 | 8 | |||||
Речь о результате "экзекута".
Тут ActionSaveProtocol это экземпляр класса TFileSaveAs. Добавлено через 5 минут Но есть ситуации, когда нужно предложить пользователю имя по умолчанию.
0
|
75 / 26 / 22
Регистрация: 22.06.2013
Сообщений: 127
|
||||||
01.06.2017, 09:53 | 9 | |||||
1
|
01.06.2017, 09:53 | |
Помогаю со студенческими работами здесь
9
Кнопки "Отмена", "Пропустить", "Повторить"
Обработка нажатия клавиши "Ctrl" совместно с клавишей "+" Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |