![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как закрыть форму из OnShow [D5, D6]
AlexeyT © (2006-02-28 12:15:00)Почему закрытие формы (Close) не работает из события OnShow?:
procedure TForm2.FormShow(Sender: TObject);
begin
ShowMessage('Form opened');
Close; //не закрывает форму!
end;
Что я хочу: вызвать форму, чтобы она сама отработала в модальном режиме и после работы закрылась. Правильно ли делать Close прямо из OnShow, или можно это сделать как-то по-другому? Как?
msguns (2006-03-01 14:40:00) [1]>AlexeyT © (01.03.06 14:04) [17]
>Не в курсе, что значит "по обычному стандарту"?
Все делается в файле проекта
AlexeyT (2006-03-01 14:04:00) [2]
> и где здесь нужно закрытие из OnShow?
Я уже сказал: сначала было сделано как запуск/закрытие из OnShow, и это не работало. Вопрос был: как сделать лучше. Подсказали.
> Похоже, что форма "сплэшная".
> Если так, то почему бы не сделать ее показ по обычному стандарту
> (как у Тексейры, например)
Не в курсе, что значит "по обычному стандарту"?
msguns (2006-03-01 11:06:00) [3]Похоже, что форма "сплэшная".
Если так, то почему бы не сделать ее показ по обычному стандарту (как у Тексейры, например)
clickmaker (2006-03-01 11:05:00) [4]
> Затем:
> - юзеру нужна возможность прервать кнопкой процесс,
> - возможность видеть прогресс-бар.
и где здесь нужно закрытие из OnShow?
AlexeyT (2006-03-01 10:52:00) [5]
> Зачем форма-то нужна? Модальная?
Затем:
- юзеру нужна возможность прервать кнопкой процесс,
- возможность видеть прогресс-бар.
Mikhail V (2006-03-01 09:56:00) [6]>Все работает, что не так?
Все не так :)
Ega23 (2006-03-01 09:56:00) [7]
> Все работает, что не так?
Зачем форма-то нужна? Модальная? Напиши функцию и выполняй из главной формы, в чём проблема-то???
AlexeyT (2006-03-01 09:47:00) [8]Anatoly Podgoretsky
Нет, не обманываю.
Форма показывается в _модальном_ режиме, через ShowModal, на форме таймер, который запускает выполнение моей процедуры и по окончании вызывается Close. Все работает, что не так?
Anatoly Podgoretsky (2006-02-28 22:56:00) [9]AlexeyT © (28.02.06 12:34) [2]
Обманываешь ты нас
Нет, мне нужно форму показывать именно в _модальном_ режиме
AlexeyT (2006-02-28 22:17:00) [10]В общем, сделал старт/стоп процесса по таймеру. Вроде все работает, спасибо.
tesseract (2006-02-28 17:18:00) [11]
> С таймером - хорошая мысль...
Сам так и делаю.
Гошик Кувшинов (2006-02-28 14:48:00) [12]потому что по умолчанию close не закрывает, а только прячет форму т.е. делает ей hide (а она в этот момент и так невидима), а потом дельфя после onshow снова делает ей show и она показывается. если надо чтобы close закрыла форму из onshow, перекрой onclose и устанавливай там action := cafree
Desdechado (2006-02-28 14:00:00) [13]а смысл создавать форму, чтоб она отработала без участия пользователя и закрылась?
может, проще написать функцию без визуальных эффектов?
clickmaker (2006-02-28 13:59:00) [14]
> AlexeyT © (28.02.06 12:15)
class function TForm1.Execute;
begin
with TForm1.Create(Application) do begin
try
if Инициализация успешно then
Result := (ShowModal = mrOk)
else
Result := false;
finally
Free;
end;
end;
end;
AlexeyT (2006-02-28 13:00:00) [15]2tesseract
Вызвать форму немодально я могу, но тогда юзер сможет переключаться на основную форму в процессе работы этой, что нежелательно. Желательно вызывать модально.
С таймером - хорошая мысль...
tesseract (2006-02-28 12:54:00) [16]
> Правильно ли делать Close прямо из OnShow, или можно это
> сделать как-то по-другому? Как?
Close в OnShow работать и не должен.
Вызыви форму немодально, отработай, потом вызови функцию вызвавшей формы которая её закроет.
Или брось на форму таймер и закрывай из него.
AlexeyT (2006-02-28 12:34:00) [17]2umbra
Ты имеешь в виду, делать Show/Hide, вместо ShowModal?
Нет, мне нужно форму показывать именно в _модальном_ режиме, Show не подходит.
umbra (2006-02-28 12:22:00) [18]лучше ее показывать и скрывать откуда-то извне.