Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/57: Рейтинг темы: голосов - 57, средняя оценка - 4.61
1 / 1 / 0
Регистрация: 30.10.2009
Сообщений: 27

Закрытие форм

29.11.2009, 16:51. Показов 10603. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем делаю текстовый редактор (мой самый первый проект) по типу стандартного Windows блокнота. Все получается кроме некоторых деталей. Насколько каждый помнит, то после редактирования текстовый строки и нажатия на крестик(закрытие формы) в нем выскакивает сообщение об сохранении документа и что он был изменен. Я сделал вторую форму, на которой выводится данный диалог, про сохранении файлов, но после нажатия на крестик или кнопку отмена он закрывается и выскакивает ошибка, а она (форма) должна закрыться и перейти на первую форму, для продолжения редактирования текста.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Закрытие первой формы(код первой формы)
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if (Memo1->Modified) {
 Form2->ShowModal();
}
else
Form1->Close();
}
 
//Закрытие второй формы (код второй формы)
void __fastcall TForm2::Button3Click(TObject *Sender)
{
Form2->Close();
}
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.11.2009, 16:51
Ответы с готовыми решениями:

Закрытие форм
void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose) { if (MessageBoxA(NULL, "Вы действительно хотите...

Открытие и закрытие форм
Привет, подскажите как так.. Есть главная форма Form1 и из нее вызывается Form2. На ней отображается таблица из базы данных, есть кнопки...

Закрытие форм
Вообщем такая проблема. Есть форма 1 и форма 2. Из формы 1 открываю форму 2. Форма 2 открывается, а форма 1 закрывается. Потом нажимаю на...

8
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
29.11.2009, 16:58
RichEdit
посмотри в этой теме... я там несколько раз вроде постил как это сделать... там вобщем то тоже делали текстовый редактор =)
1
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
29.11.2009, 16:59
Там нужен MessageBox или DialogBox а не форма.
1
1 / 1 / 0
Регистрация: 30.10.2009
Сообщений: 27
29.11.2009, 17:01  [ТС]
Спс, всем
galileopro, только в моем билдере нет ни MessageBox'a ни DialogBox'а (Codegear C++ Builder 2010)
0
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
29.11.2009, 20:06
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Button_Click(TObject *Sender)
{
 String s;
 s="Вы действительно хотите выйти?";
if(Application->MessageBox(s.w_str(),MB_YESNO + MB_ICONQUESTION)==IDYES){
     From1->Close();    
     }
 
}
0
1 / 1 / 0
Регистрация: 30.10.2009
Сообщений: 27
01.12.2009, 21:47  [ТС]
В общем я немного разобрался в WinAPI функциях, только не до конца....
Я не пойму как каждой кнопке назначить действие.... У меня три кнопки: MB_YESNOCANCEL, YES я назначил, а вот остальным не пойму как. Читал в справочнике Архангельского, так то не понимает... (DataSet->Cancel);.
И еще можно ли как-то переименовать те кнопки? Как в Windows 7 (Сохранить, Не сохранять, Отмена)? или можете тогда подсказать, какую функцию мелкософт там использовали? и привести небольшой пример....

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if (Memo1->Modified) {
 
 
if (MessageBox(NULL,
 "Файл был изменён. Сохранить изменения?",
 "Блокнот",
 MB_YESNOCANCEL + MB_ICONQUESTION)==IDYES)
{
N5Click(Sender);
}
}
else
Form1->Close();
}
0
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
02.12.2009, 20:07
http://www.firststeps.ru/mfc/w... g/r.php?59
Возвращаемые значения
Возвращаемое значение нулевое, если недостаточно памяти, чтобы создать окно сообщений.
Если функция завершается успешно, возвращаемое значение - одно из следующих значений элемента меню, возвращаемых диалоговым окном:
IDABORT - Была выбрана кнопка Прервать (Abort).
IDCANCEL - Была выбрана кнопка Отменить (Cancel).
IDIGNORE - Была выбрана кнопка Игнорировать (Ignore).
IDNO - Была выбрана кнопка Нет (No).
IDOK - Была выбрана кнопка OK.
IDRETRY - Была выбрана кнопка Повторить (Retry).
IDYES - Была выбрана кнопка Да (Ye).


почитай там все очень хорошо описано, просто проверяй какое значение возвращает так же как ты уже делаешь ну и назначай действия.
0
1 / 1 / 0
Регистрация: 30.10.2009
Сообщений: 27
02.12.2009, 22:52  [ТС]
Сколько б не перечитывал, не пойму, как задавать каждой кнопке событие. Задал кнопке "Да" и кнопке "Отмена", а кнопка "Нет" почему-то берет событие кнопки "Отмена"
Пожалуйста, если можете, киньте правильный листинг

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::FormClose(TObject *Sender, TCloseAction &Action)
{
if (Memo1->Modified) {
    if (MessageBox(0,
    "Файл был изменён. Сохранить изменения в файле?",
    "Блокнот",
    MB_YESNOCANCEL + MB_ICONQUESTION + MB_DEFBUTTON1)==IDYES)
{
    N6Click(Sender);
    Abort();
}
else
if (IDCANCEL) {
Abort();
}
else
Form1->Close();
}
else
Form1->Close();
}
И еще, как в сообщение отобразить имя отредактированного файла, как в блокноте Windows?
0
17 / 17 / 4
Регистрация: 03.12.2009
Сообщений: 103
03.12.2009, 17:25
Вообще-то сначала надо сохранить результат выполнения (в твоем случае - нажатие на какую-то кнопку), а потом уже его анализировать.
C++
1
2
3
4
5
6
7
int result = MessageBox(...);
if(result == IDYES)
{}
else if(result == IDCANCEL)
{}
else
{}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.12.2009, 17:25
Помогаю со студенческими работами здесь

Закрытие форм
Подскажите пожалуйста как прописать в кнопке, что бы закрыть все видимые и не видимые формы, или это нужно прописывать типо ... ??? ...

закрытие форм
привет у меня в программке 4 формы, которые открываются по отдельности если я закрываю первую форму, то программа закрывается, но если...

Открытие/Закрытие форм
Как сделать, чтобы новая форма открывалась точно на том месте, на котором СКРЫЛАСЬ старая?

Закрытие форм и ее обновление.
Нужна помощь. Сделана игра карточный пасьянс. И на форме, где располагаются карты есть кпонка "Выйти". Нажимая на нее мы...

Открытие/закрытие форм
Есть 2 формы, на первой форме есть кнопка, как сделать, чтобы при нажатии на кнопку открывалась форма 2 и закрывалась форма 1, именно...


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

Или воспользуйтесь поиском по форуму:
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