Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Morgan-S23
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102

Ошибка заполнения заголовка

24.07.2013, 16:20. Показов 665. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
в программе, при нажатии на на кнопку закрытия, выскакивает окно: Закрыть программу?

C++
1
2
3
4
5
void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool &CanClose)
{
 if (MessageDlg("Закрыть программу?", mtConfirmation, TMsgDlgButtons() << mbOK << mbCancel,0) == mrCancel)
    CanClose = false;
}
После того как пользователь сделал операцию по смене пола в настройках программы, сама программа должна перезапуститься (для оформления).

Так вот, пишу, значит, на кнопке такое:
C++
1
2
3
4
5
void __fastcall TMainForm::Button3Click(TObject *Sender)
{
ShellExecute(0,0,"Project1.exe",0,0,0);
Close();
}
Результат:
Выскакивает окно: Закрыть программу? И в это же время уже поверх программы открывается новая программа. Предыдущая так и остается с вопросом, закрыть ли программу.

Надо мгновенно и безопасно закрывать программу. Как?

Добавлено через 2 минуты
Для модераторов: В заголовке пишу "проблема с перезапуском программы". Форум выдает ошибку и не разрешает создавать тему. Измените заголовок, пожалуйста.

Писал я исключительно русскими символами, хотя система почему-то указывает на то, что я писал разными языками в одном слове

Добавлено через 9 минут
через Application->Terminate(); все работает, но не слишком ли это грубо?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2013, 16:20
Ответы с готовыми решениями:

При переносе сложного заголовка таблицы в Word теряются границы ячеек заголовка
При переносе &quot;сложного&quot; заголовка таблицы в Word на следующий лист (на первом листе таблицы все границы у ячеек есть!) теряются некоторые...

Ошибка http заголовка
&lt;?php $user_name = 'rock'; $user_pass = 'roll'; if(!isset($_SERVER) || !isset($_SERVER) || ($_SERVER != $user_name) || ($_SERVER...

Ошибка принятия заголовка сервером
пхп скрипт. Вытягивает из базы данные для создания rss-фида. Вначале срипта посылаю заголовок серверу header('Content-type:...

3
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
24.07.2013, 16:25
Ну есть же масса решений по идее.
Я не особо задумывался, нет компа под рукой.
Заведи глобальную переменную
bool restart=false;

C++
1
2
3
4
5
6
7
void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool &CanClose)
{
if (restart==false) {
 if (MessageDlg("Закрыть программу?", mtConfirmation, TMsgDlgButtons() << mbOK << mbCancel,0) == mrCancel)
    CanClose = false;
}
}
А в обработку клавиши добавляешь

C++
1
2
3
4
5
6
void __fastcall TMainForm::Button3Click(TObject *Sender)
{
restart=true;
ShellExecute(0,0,"Project1.exe",0,0,0);
Close();
}
Проблема решена. Имхо есть и более красивые способы. Но это так, навскидку.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,908
Записей в блоге: 12
24.07.2013, 16:26
Не надо никаких Application->Terminate. Показывай запрос "Хотите ли вы..." всегда, кроме случая, когда перезапускаешь свою программу. То есть, добавь флажок (изначально = false), и напиши:

C++
1
2
3
4
5
void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool &CanClose)
{
    CanClose = 
        flag || MessageDlg("Закрыть программу?", mtConfirmation, TMsgDlgButtons() << mbOK << mbCancel, 0) == mrOk;
}
, и этот флаг устанавливай в true ТОЛЬКО перед перезапуском. Тогда во всех остальных случаях программа будет запрашивать согласие пользователя, а если flag == true, то уже не будет (результат и так = true, вторая часть выражения не будет вычисляться, следовательно MessageDlg не будет показан)
2
 Аватар для Morgan-S23
-26 / 3 / 0
Регистрация: 20.03.2011
Сообщений: 102
24.07.2013, 16:47  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Тогда во всех остальных случаях программа будет запрашивать согласие пользователя, а если flag == true, то уже не будет (результат и так = true, вторая часть выражения не будет вычисляться, следовательно MessageDlg не будет показан)
как говорится: "Все гениальное - просто"! Очень хороший метод, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.07.2013, 16:47
Помогаю со студенческими работами здесь

Ошибка C1583 в файле предкомпилированного заголовка
Ошибка 1 error C1853: файл предкомпилированного заголовка &quot;Debug\Win32Project1.pch&quot; создан в предыдущей версии компилятора или...

Ошибка в изменении цвета заголовка VBA
Всем привет! Столкнулся с не большой проблемой. Есть поле &quot;день рождения&quot; Если сегодня у клиента Д.Р., то цвет заголовка меняется ...

Ошибка при получении заголовка окна программы
Добрый день. Может кто-то встречался со следующей проблемой и может помочь? Есть программа. Программа во время работы вызывает dll...

В заданном файле найти и напечатать строки заголовка. Строкой заголовка считать строку, до и после которой оставлена хотя бы одна пустая строка.
В заданном файле найти и напечатать строки заголовка. Строкой заголовка считать строку, до и после которой оставлена хотя бы одна пустая...

Ошибка заполнения StringGrid
Здраствуйте, не могу понять почему программа не хочет заполнять массив рандомом( {61. Описать процедуру Gauss(A,M,N,i1,i2,X),...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru