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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2013, 20:58   #1
Dennis777
Форумчанин
 
Регистрация: 06.11.2009
Сообщений: 203
По умолчанию Закрытие формы

Ситуация. Есть форма, вызываемая методом Show. На ней - тесты. После тестов - по нажатию на кнопку - подводится итог, в Мэссэдж диалог выводится кол-во правильных баллов, по нажатию на ОК, должна закрыться модальная форма.

Код:
if i=10 then begin
bs:=MessageDlg('Вы набрали '+inttostr(right)+' баллов', mtCustom, [mbOK], 0);
  end;
if bs=mrOk then begin
Form18.Close;
PlaySound (PChar(ExtractFilePath (ParamStr(0)) + 'sounds/common/click.wav'), 0, 0);
end;
В то же время в процедуре ОнКлоз - происходит обращение к Форме 2 с целью записать результат
Код:
if lesson=1 then
grammar2a:=right;
if lesson=2 then
grammar3a:=right;
Action := caFree;
Проблема в том, что при таком закрытии - форма закрывается с вероятностью 50 процентов) То закрывается - то нет. Как можно исправить, подскажите пожалуйста?
Интересный проект по изучению английского:
Английский в формате путешествия по США

Последний раз редактировалось Dennis777; 20.06.2013 в 21:42.
Dennis777 вне форума Ответить с цитированием
Старый 20.06.2013, 21:07   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Модальные формы закрываются присвоением в ModalResult, например mrOk. И не в OnClose. Action := caFree; не нужен
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.06.2013, 21:39   #3
Dennis777
Форумчанин
 
Регистрация: 06.11.2009
Сообщений: 203
По умолчанию

Мне дико неудобно, но я немного перепутал(
Это не модальная, а обычная форма, вызываемая через Шоу
Интересный проект по изучению английского:
Английский в формате путешествия по США

Последний раз редактировалось Dennis777; 20.06.2013 в 21:43.
Dennis777 вне форума Ответить с цитированием
Старый 20.06.2013, 22:03   #4
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

так не?
Код:
procedure WrteResults;
begin
  if lesson=1 then
    grammar2a:=right;
  if lesson=2 then
    grammar3a:=right;
end;
...
if i=10 then
begin
  MessageDlg('Вы набрали '+inttostr(right)+' баллов', mtCustom, [mbOK], 0);
  WriteResults;
  Form18.Close;
end;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 20.06.2013 в 22:06.
Yurk@ вне форума Ответить с цитированием
Старый 20.06.2013, 22:33   #5
Dennis777
Форумчанин
 
Регистрация: 06.11.2009
Сообщений: 203
По умолчанию

переписал, не закрывается все равно(
Интересный проект по изучению английского:
Английский в формате путешествия по США
Dennis777 вне форума Ответить с цитированием
Старый 20.06.2013, 22:46   #6
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

ищи что не дает ей закрыться
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие формы annaangel Общие вопросы Delphi 2 09.10.2009 13:26
Закрытие формы.... sergiksergik Microsoft Office Excel 18 22.09.2009 20:23
Закрытие формы RIO Общие вопросы Delphi 2 27.08.2009 17:10
Закрытие формы girz БД в Delphi 7 13.05.2009 22:54