Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не срабатывает ModalResult [D6, WinXP]


saNat ©   (2005-10-03 16:18:00) 

Доброго времени суток (о:

Задача участка кода: перед тем как покажется модальное окно (полагаю на обработчике OnShow) прочитать или создать новый файл в случае отсутствия существующего. Если операция не удалась, то требуется отменить открытие окна.

Procedure TAppConfigForm.FormShow(Sender:TObject);
Begin
AssignFile(ConfigFile,ExtractFilePath(ParamStr(0)){+'\Config.ISD'});
{$I-}
Reset(ConfigFile);
If IOResult<>0
 Then
  Begin
   Rewrite(ConfigFile);
   If IOResult<>0
    Then
     Begin
      MessageDlg('Error',mtError,[mbOk],0);
      ModalResult:=mrAbort;    
     End;
  End;
{$I+}
CloseFile(ConfigFile);
End;


Но не работает. В случае ошибки создания файла получаю сообщение о ошибке и работа продолжается дальше. В чем я не прав?

С уважением, ЕВА


Reindeer Moss Eater   (2005-10-03 17:26:00) [1]

Нафига плести кружева из обработчиков событий, когда удобно и логично иметь линейный алгоритм какого-то процесса?

Нужно отредактировать какие-то сеттинги - вызываешь в любом месте кода процедуру или функцию (не заботясь о том, какой именно класс формы редактирует настройки) - и получаешь результат отредактировано/нет.
Просто и прямолинейно.
Вместо того, что бы помнить, что надо создать экземпляр формы такого то класса, сделать ей ShowModal. Вспомнить, что файл читается в обработчике OnShow и так далее....


saNat   (2005-10-03 17:16:00) [2]


> Vladimir88   (03.10.05 16:45) [4]

Не прокатит.


> Reindeer Moss Eater ©   (03.10.05 17:01) [5]

Главное идея :) Решение благодаря ей нашел


Reindeer Moss Eater   (2005-10-03 17:01:00) [3]

И чем же именно нехорошо?


Vladimir88   (2005-10-03 16:45:00) [4]

Ну имхо так не очень хорошо делать, а разве не прокатит в OnShow AppConfigForm.Close;


saNat   (2005-10-03 16:29:00) [5]

Хе-хе... И правда. Как сам то не додумался :(

Спасибо Вам за помощь.

С уважением, ЕВА.


Reindeer Moss Eater   (2005-10-03 16:26:00) [6]

Рисуешь функцию прямо в модуле TAppConfigForm

function ShowModalForm(const AFileName : string) : boolean;
begin
Result := False;
if <что-то_там_с_открытием_файла> then
 with TAppConfigForm.Create(Application) do
  try
    .....
    Result := ShowModal = mrOk;
  finally
    Free;
  end;
end;


Reindeer Moss Eater   (2005-10-03 16:21:00) [7]

>В чем я не прав?

В том, что используешь OnShow


Наверх

Титульная страница Поиск, карта сайта Написать письмо