![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не срабатывает 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