Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отмена закрытия формы 
V
    Опции темы
serezhka1986
Дата 11.6.2010, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: нет
Всего: 0



Нужно чтобы при закрытии формы крестиком спросило разрешение на ее закрытие, и при нажатии "Нет" форма не закрывалась.  smile 
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
cemick
Дата 11.6.2010, 14:49 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 6



Смотрим событие OnCloseQuery у TForm
PM MAIL WWW   Вверх
PsiMagistr
Дата 11.6.2010, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: 1
Всего: 1



Сейчас напишу код, жди.

Добавлено @ 15:04
Отыщи обработчик CloseQuery формы и запиши:

Код

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Application.MessageBox('Хочешь закрыть форму?', 'Закрытие',mb_YesNo+mb_IconQuestion) = idNo then  //Если нажата кнопка "Нет", то:

CanClose := False; 

//Иначе переменная будет хранить значение по умолчанию, то есть True

end;



Это сообщение отредактировал(а) PsiMagistr - 11.6.2010, 15:07


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
serezhka1986
Дата 11.6.2010, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 215
Регистрация: 12.6.2009

Репутация: нет
Всего: 0



Большое спасибо!!!!!!!!!!
Тема закрыта!!!
--------------------
Для некоторых лучший способ написать что-нибудь осмысленное - это сесть жопой на клавиатуру... 
PM   Вверх
Mikel
Дата 11.6.2010, 15:11 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: нет
Всего: 2



Код

CanClose := Application.MessageBox('Хочешь закрыть форму?', 'Закрытие',mb_YesNo+mb_IconQuestion) = idYes; 



--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
PsiMagistr
Дата 11.6.2010, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: 1
Всего: 1



Эка Mikel, извернулся. И никаких тебе условий. Молодец, однако.
 


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
Mikel
Дата 11.6.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: нет
Всего: 2



PsiMagistr
Угу smile И еще одна поправочка. Сам не пробовал, но думаю что при закрытии диалога крестиком он также закроет форму, поэтому сравнение с idYes. Да, и вроде mrYes smile



--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
PsiMagistr
Дата 11.6.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: 1
Всего: 1



Хм.... Ничего не понял в последнем посте.   smile  Мой вариант работает. Ваш тоже. Ничего дополнительного нигде не надо. Ибо:

Крестика у самого диалога попросту нет, точнее есть, но он же блокирован.)))

Это сообщение отредактировал(а) PsiMagistr - 11.6.2010, 15:50


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
БелАмор
Дата 14.6.2010, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 10.6.2010
Где: Россия

Репутация: 7
Всего: 17



По поводу оптимизации логических выражений: Сообщение 484
По поводу закрытя форм вообще и через "крестик" в частности: http://www.delphikingdom.com/asp/answer.asp?IDAnswer=61703
PM   Вверх
bems
Дата 14.6.2010, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



БелАмор, ну там ты тоже не иделаьно

Код

function SomethingCheckAndFix: Boolean;
begin
  Result := SomethingIsOk;
  if not Result then
    if MsgBoxYesNo('Исправить?') then
      Result := FixSomething;
end;

заменить на
Код

function SomethingCheckAndFix: Boolean;
begin
  Result := SomethingIsOk or (MsgBoxYesNo('Исправить?') and FixSomething)
end;



--------------------
Обижено школьников: 8
PM MAIL   Вверх
БелАмор
Дата 15.6.2010, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 10.6.2010
Где: Россия

Репутация: 7
Всего: 17



Цитата
БелАмор, ну там ты тоже не иделаьно
...
Result := SomethingIsOk or (MsgBoxYesNo('Исправить?') and FixSomething)

Идеальных вариантов не существует в принципе. Всегда приходится выбирать, исходя из каких-то критериев: размер кода, скорость выполнения, прозрачность для понимания, надёжность, красота кода и т.д... И тут многое зависит от личных приоритетов и предпочтений. Мои приоритеты:

1. Надёжночть.
2. Прозрачночть.
3. Размер кода, красота и всё остальное.

Оптимизация по пункту 3 не должна идти за счёт пунктов 1 и 2. 
Во втором варианте работоспособность кода ставится в зависимость от настроек компилятора или наличия директив. Это внешние факторы по отношению к конкретной функции и при прочих равных условиях это потенциально снижает надёжность. В любом деле важно вовремя остановиться, и до какой степени учитывать влияние какого-либо фактора, в значительной степени зависит от предпочтений конкретного человека. Лично я избегаю ставить работоспособность кода в зависимость от того, включена быстрая оценка или нет. Это иногда может приводить к некоторому увеличению кода, но на душе - спокойнее...
Вообще, я иногда предпочитаю вносить некоторую заведомую избыточность, если это идёт на пользу надёжности или прозрачности. В частности, если есть глобальная переменная, равенство значения которой nil имеет принципиальное значение и где-то проверяется, то при её объявлении я её явно инициализирую nil. Не потому, что не знаю, что глобальные переменные и так инициализируются этим значением, а потому, что "= nil" в данном случае заменяет длинный комментарий с напоминанием, что при уничтожении соответствующей формы следует обнулять эту переменную.
Так что, в данном случае "неидеальность" - не результат недосмотра, а осознанный выбор варианта, с которым могут согласиться не все, но который не выходит за рамки приличий и имеет право на существование...
PM   Вверх
bems
Дата 15.6.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(БелАмор @  15.6.2010,  03:04 Найти цитируемый пост)
Лично я избегаю ставить работоспособность кода в зависимость от того, включена быстрая оценка или нет. Это иногда может приводить к некоторому увеличению кода, но на душе - спокойнее...
Да ну, это же дефолтное состояние. Можно сказать стандарт.



--------------------
Обижено школьников: 8
PM MAIL   Вверх
БелАмор
Дата 16.6.2010, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 10.6.2010
Где: Россия

Репутация: 7
Всего: 17



Цитата
Да ну, это же дефолтное состояние. Можно сказать стандарт


Предлагаю списать это на личные предпочтения...


PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0545 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.