2 / 2 / 4
Регистрация: 26.05.2013
Сообщений: 126
1

Сохранение

06.06.2013, 16:31. Показов 1636. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не знаете как сделать, чтобы перед выходом спрашивало: "Сохранить изменения?" и были варианты ответа: "Да", "Нет", "Отмена"?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2013, 16:31
Ответы с готовыми решениями:

Сохранение положения компонента на форме (Сохранение параметра в Ini-файл)
Не знаю верно ли назвал тему. Доброго вечера тебе, всяк сюда входящий. Подскажите пожалуйста с...

сохранение
как будет писаться строка сохранения на С++ билдэре if SaveDialog1.Execute then...

Неправильное сохранение
Привет=) Работаю над текстовым редактором. Код сохранения: void __fastcall...

Не работает сохранение
Привет=) Я работаю с текстовым редактором. Вот код кнопки "Сохранить как": void __fastcall...

14
LK
Заблокирован
06.06.2013, 16:49 2
Можно в событии OnFormCloseQuery (создать обработчик в Инспекторе для формы на вкладке Events), а ткже при нажатии на кнопку "Закрыть", если она у вас есть, выводить MessageBox
C++
1
2
3
4
if (MessageBox(0,"Сохранить содержимое окна редактирования? ",
                 "Подтвердите сохранение",MB_YESNO)==IDYES) {
  ВашаКнопкаСохраненияClick(Sender);
}
1
Практикантроп
4823 / 2717 / 524
Регистрация: 23.09.2011
Сообщений: 5,777
06.06.2013, 17:04 3
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
4
5
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
   if (MessageBox(0,"Ñîõðàíèòü èçìåíåíèÿ?","Âûõîä èç ïðîãðàììû",
      MB_YESNOCANCEL|MB_ICONQUESTION)==IDCANCEL) /* IDYES IDNO*/  ;
}
3
2 / 2 / 4
Регистрация: 26.05.2013
Сообщений: 126
06.06.2013, 17:38  [ТС] 4
У меня получилось сделать это на вкладку Файл/Выход, а не знаете как это сделать на кнопку окна "Х" - закрыть?
0
LK
Заблокирован
06.06.2013, 17:40 5
а на Х оно должно реагировать автоматически, если вы сделали это в
Цитата Сообщение от nick42 Посмотреть сообщение
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
Добавлено через 2 минуты
это не команды, это вы кокой-то массив заполнили, и одно к другому не имеет абсолютно никакого отношения, сходите, если время будет, сюда:
Библиотека VCL и сопутствующие материалы
Путеводитель по книжкам про C++ Builder ,
полюбопытствуйте.
0
2 / 2 / 4
Регистрация: 26.05.2013
Сообщений: 126
06.06.2013, 17:43  [ТС] 6
Выдаёт ошибку, что не void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose) не относится к форме
0
737 / 527 / 130
Регистрация: 31.05.2013
Сообщений: 2,973
Записей в блоге: 3
06.06.2013, 17:46 7
1) Или Вы вручную задали событие FormCloseQuery
2) Или у Вас их два таких события
3) Или его нет хейдере
4) Или у вас форма не Form1
0
LK
Заблокирован
06.06.2013, 17:50 8
xVIKx, это:
Цитата Сообщение от LK Посмотреть сообщение
OnFormCloseQuery (создать обработчик в Инспекторе для формы на вкладке Events)
- я для кого писал ? для Пушкина? или вы собственную тему не читаете?
0
2 / 2 / 4
Регистрация: 26.05.2013
Сообщений: 126
06.06.2013, 17:58  [ТС] 9
Что-то не могу найти OnFormCloseQuery
0
737 / 527 / 130
Регистрация: 31.05.2013
Сообщений: 2,973
Записей в блоге: 3
06.06.2013, 18:03 10
http://i83.servimg.com/u/f83/1... lose11.png
1
LK
Заблокирован
06.06.2013, 18:04 11
в Object Inspector - панель по умолчанию справа - на второй вкладке Events есть строка - CloseQuery - вот в поле напротив этих буковок и надо быстро дважды щелкнуть левой кнопкой мыши
и шли бы все все-таки сюда:
Библиотека VCL и сопутствующие материалы
Путеводитель по книжкам про C++ Builder
Неужели мысль обучаться программированию не на форумах, а более традиционным способом, так и не посещала?

Добавлено через 1 минуту
Dinkin,
Изображение не существует
- загрузите на форум - Расширенный режим - Управление вложениями, и не парьте ни себе, ни другим моск.
0
737 / 527 / 130
Регистрация: 31.05.2013
Сообщений: 2,973
Записей в блоге: 3
06.06.2013, 18:09 12
Не давно тут, сразу не нашел
Миниатюры
Сохранение  
0
2 / 2 / 4
Регистрация: 26.05.2013
Сообщений: 126
06.06.2013, 19:05  [ТС] 13
Когда использую обе, то через N4Click после нажатия "Да" или "Нет" MessageBox вылетает снова. Если убираю FormCloseQuery - с первого раза реагирует на ответ. Может знаете как избавиться от повторного вылета окошка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm1::N4Click(TObject *Sender)//Выход
{   int R=MessageBox(0,"Зберегти дані перед виходом?",
                 "Підтвердіть збереження",MB_ICONQUESTION+MB_YESNOCANCEL+MB_DEFBUTTON3);
    if (R==IDYES)
                 {
    N3Click(Sender);
    Form1->Close();
}
    else
    if (R==mrNo)
    {
    Form1->Close();
}
    else
    {}
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{  
   int N=MessageBox(0,"Зберегти дані перед виходом?",
                 "Підтвердіть збереження",MB_ICONQUESTION+MB_YESNOCANCEL+MB_DEFBUTTON3);
   if (N == mrYes)
  {
    N3Click(Sender);
    CanClose=true;
}  else
   if (N==mrNo)
{ CanClose=true;
    
    }
      else 
      CanClose=false; 
   
}
0
737 / 527 / 130
Регистрация: 31.05.2013
Сообщений: 2,973
Записей в блоге: 3
06.06.2013, 19:18 14
Зачем, Вам дублер кода?


C++
1
2
3
4
5
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{  
 
   N4->Click();
}
1
2 / 2 / 4
Регистрация: 26.05.2013
Сообщений: 126
06.06.2013, 19:42  [ТС] 15
Цитата Сообщение от Dinkin Посмотреть сообщение
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{
N4->Click();
}
В данном случае идёт зацикливание окна

Добавлено через 18 минут
Form1->Close(); заменил на exit(1); и заработало
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{  
N4->Click();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender)//Выход
{   int R=MessageBox(0,"Зберегти дані перед виходом?",
                 "Підтвердіть збереження",MB_ICONQUESTION+MB_YESNOCANCEL+MB_DEFBUTTON3);
    if (R==IDYES)
                 {
    N3Click(Sender);
    exit(1);
}
    else
    if (R==mrNo)
    {
    exit(1);
}
    else
    {}
}
Всем спасибо за помощь!
0
06.06.2013, 19:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2013, 19:42
Помогаю со студенческими работами здесь

Сохранение картинки
Помогите с сохранением составленной картинки. У самого ничего не получается.

Сохранение файлов
Здравствуйте. Я С++ знаю достаточно плохо, но и не совсем чайник. Подскажите, пожалуйста, возможно...

Сохранение файлов
Все добрый день =) Скажите, как правильно использовать memo и SaveToFile, что бы взятый текст из...

Сохранение настроек
Есть программа которая сохраняет свои настройки ну например в ini или txt файл при ее закрытии...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru