Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.23;
Скачать: 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 вся ветка

Текущий архив: 2005.10.23;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.029 c
3-1125384126
Киря
2005-08-30 10:42
2005.10.23
Ошибка Fast Report


3-1126646105
TALLA
2005-09-14 01:15
2005.10.23
MySQL через ADO, invalid field size


2-1127813315
ABS
2005-09-27 13:28
2005.10.23
ADO


1-1128076929
Lera
2005-09-30 14:42
2005.10.23
Центрирование в StringGrid


4-1124295704
TG
2005-08-17 20:21
2005.10.23
Хочу написать звонилку