Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2013, 08:04   #11
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

-if then else
-Не, нет. Не слышал!
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 17.06.2013, 08:07   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А может у тебя где-то еще какой нить выход прописан?
Или это не главная форма приложения?
Цитата:
-if then else
А он тут не нужен )
Автор все делает правильно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.06.2013, 08:14   #13
ArhangelDJN
 
Регистрация: 31.03.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Или это не главная форма приложения?
Первая форма у меня сплеш-скрин сделана. Потом она SplashForm.Free, а Форма 1 создается. И работаю тогда уже из первой формы со всеми остальными.

Цитата:
Сообщение от Stilet Посмотреть сообщение
А может у тебя где-то еще какой нить выход прописан?
Присутствует еще :
Код:
procedure TForm1.Button7Click(Sender: TObject);
begin
Form1.Close;
Application.Terminate;
end;
Но как я понимаю диалог закрытия "Да" или "Нет" как раз может вполне на это повлиять - если нажму да закроется, а если "нет" - не должно закрываться все же?

Или не так я думаю?

Я правильно сообразил.

Получается если нажать на крестик (закрыть приложение) то код отрабатывает как нужно - выскакивает вопрос "Закрыть программу?", "Да", "Нет". ДА - закрывает, Нет - продолжается работа приложения.
Но если нажать на эту кнопку (Выход), то код отрабатывает не правильно - если нажать на "Нет" заместо продолжения работы приложения оно закрывается так же как и при "Да".

Как сделать что б он и на нажатие кнопки "Выход" нормально реагировал?

Последний раз редактировалось Stilet; 17.06.2013 в 08:35.
ArhangelDJN вне форума Ответить с цитированием
Старый 17.06.2013, 11:45   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Убери Application.Terminate;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.06.2013, 23:15   #15
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

В событие OnCloseQuery вашей формы:
Код:
  if MessageDlg('Вы действительно хотите выйти?', mtInformation, [mbYes, mbNo], 0) = mryes then
 begin
 ...//что-то делаем    
    CanClose := True;
  end
  else
    CanClose := False;
Не?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 17.06.2013, 23:22   #16
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Чтобы пропускать выход из ОС, но не закрытие ПО юзером:
Ловим WM_QUERTYENDSESSION сообщение,
Ставим некую глобальную переменную IsOSShuttingDown в True, затем в OnCloseQuerty собитии делаем такую логику:
CanClose:=IsOSShutingDownж
Человек_Борща вне форума Ответить с цитированием
Старый 17.06.2013, 23:47   #17
ArhangelDJN
 
Регистрация: 31.03.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Убери Application.Terminate;
Спасибо. Немного подумав послушав советы я сообразил.

Нашел решение и переписал несколько процедур. Код привожу ниже.

procedure TForm1.Button7Click(Sender: TObject);
begin
{закрыть приложение}
Form1.Close;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//анимация закрытия окна + закрытие приложения
AnimateWindow(handle, 400, AW_BLEND or AW_HIDE);
Action := caFree;
Application.Terminate;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
//подтверждение закрытия.
CanClose:=(MessageDlg ('Подтвердите закрытие программы',mtConfirmation,[mbYes,mbNo],0)=mrYes);
end;

Все начало отрабатывать как нужно.

А как сделать что б писал не "Yes""No" a "Да""Нет"?
ArhangelDJN вне форума Ответить с цитированием
Старый 18.06.2013, 00:13   #18
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

примените MessageBox.
он зависит от настроек ОС, и на русской ОС выдаст русский текст.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 18.06.2013, 00:53   #19
ArhangelDJN
 
Регистрация: 31.03.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
примените MessageBox.
он зависит от настроек ОС, и на русской ОС выдаст русский текст.
Ага. Ясненько. Спасибо большое)
ArhangelDJN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при выходе из игры cs 1.6 pavel42 Компьютерное железо 19 20.10.2009 21:00
Скрипт срабатывающий при выходе со странички. valyan-t JavaScript, Ajax 0 30.09.2009 17:40
Обновление программы по http протоколу без открытия браузера и подтверждения The Best Работа с сетью в Delphi 9 21.07.2009 16:57
Ошибка при выходе из ждущего режима. С.М.С Компьютерное железо 2 08.03.2009 02:38