Вниз
Скачать: CL | DM;

Не срабатывает ModalResult   Найти похожие ветки 

← →
saNat ©   (2005-10-03 16:18) [0]

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

Задача участка кода: перед тем как покажется модальное окно (полагаю на обработчике 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 16:21) [1]

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

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


← →
Reindeer Moss Eater ©   (2005-10-03 16:26) [2]

Рисуешь функцию прямо в модуле 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;


← →
saNat ©   (2005-10-03 16:29) [3]

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

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

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


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

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


← →
Reindeer Moss Eater ©   (2005-10-03 17:01) [5]

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


← →
saNat ©   (2005-10-03 17:16) [6]


> Vladimir88   (03.10.05 16:45) [4]

Не прокатит.


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

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


← →
Reindeer Moss Eater ©   (2005-10-03 17:26) [7]

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

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
1-1128334839
Shlomo
2005-10-03 14:20
2005.10.23
Rave Reports: Region Component – его рамки?


5-1103569355
klyonov
2004-12-20 22:02
2005.10.23
Установить значение свойства


3-1126268799
alsov
2005-09-09 16:26
2005.10.23
Подскажите функция, которая из значения null делает заданый текст


1-1127907595
Knight
2005-09-28 15:39
2005.10.23
Цифровая подпись...


3-1126696752
leonidus
2005-09-14 15:19
2005.10.23
Почему не выполняется запрос с Join`ом ?




   Наверх