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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отмена действия 
:(
    Опции темы
Sergey89
Дата 18.9.2004, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я сделал так, чтобы при закрытии окна вызывалась функция MessageDlg,
как сделать так, чтобы при нажатии на кнопку Cancel форма не закрылась?
--------------------
mlib.com.ru
PM MAIL   Вверх
Alex
Дата 18.9.2004, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

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



Код
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Query1.CachedUpdates
then
 case Application.MessageBox(
              'Сохранить изменения в базе данных?',
              'Подтвердите сохранение изменений',
              MB_YESNOCANCEL+MB_ICONQUESTION) of

   IDYES:    ...
   IDCANCEL: CanClose:=false;
   IDNO:     ...
 end;

end;



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Underdark
Дата 18.9.2004, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



MessagDlg - энто функция, которая возвращает код нажатой клавиши (например для Cancel она вернёт 2).
То бишь, делаешь что-то типа так:
Код
if MessagDlg(..........)=2 then Exit{или что-то подобное - зависит от конкретной ситуации}
else Form1.close{например};


А вообще, если хочешь ответа по существу, то и спрашивай поконкретней и желательно код привести smile.gif
PM MAIL   Вверх
Sergey89
Дата 18.9.2004, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
s: integer;
begin
if Label6.Caption= '0' then
begin
end
else
begin
s:=MessageDlg('Òåêñò â äîêóìåíòå áûë èçìåí¸í.'+ #13+ 'Âû õîòèòå ñîõðàíèòü èçìåíåíèÿ?', mtWarning, [mbYes, mbNo, mbCancel], 0);
if s= mrYes then
begin
SaveDialog1.Execute;
end;
if s= mrNo then
begin
end;
if s= mrCancel then
{---Íå çíàþ---}
end;
end;

Вот код
--------------------
mlib.com.ru
PM MAIL   Вверх
Ripper
Дата 18.9.2004, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


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

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



if s= mrCancel then Form1.CanClose:=false; ?


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
Sergey89
Дата 19.9.2004, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Не такого свойства у формы CanClose
--------------------
mlib.com.ru
PM MAIL   Вверх
Ripper
Дата 19.9.2004, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


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

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



Ой)
alex-co тебе правильно написал. Используй formclosequery:
Код

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
s: integer;
begin
if Label6.Caption= '0' then
begin
end
else
begin
s:=MessageDlg('Òåêñò â äîêóìåíòå áûë èçìåí¸í.'+ #13+ 'Âû õîòèòå ñîõðàíèòü èçìåíåíèÿ?', mtWarning, [mbYes, mbNo, mbCancel], 0);
if s= mrYes then
begin
SaveDialog1.Execute;
end;
if s= mrNo then
begin
end;
if s= mrCancel then
CanClose:=false;
end;
end;

у меня работает. Да кстати если label6.caption = '0 ' и прога ничего не должна делать используй exit smile.gif и вообще пример alex-co идеален..
Код

s:=MessageDlg('Oaeno a aieoiaioa aue eciai?i.'+ #13+ 'Au oioeoa nio?aieou eciaiaiey?', mtWarning, [mbYes, mbNo, mbCancel], 0);
case s of
mrCancel:CanClose:=false;
end;

Воть) используй CASE


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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