Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.19;
Скачать: CL | DM;

Вниз

Как закрыть форму из OnShow   Найти похожие ветки 

 
AlexeyT ©   (2006-02-28 12:15) [0]

Почему закрытие формы (Close) не работает из события OnShow?:

procedure TForm2.FormShow(Sender: TObject);
begin
 ShowMessage("Form opened");
 Close; //не закрывает форму!
end;

Что я хочу: вызвать форму, чтобы она сама отработала в модальном режиме и после работы закрылась. Правильно ли делать Close прямо из OnShow, или можно это сделать как-то по-другому? Как?


 
umbra ©   (2006-02-28 12:22) [1]

лучше ее показывать и скрывать откуда-то извне.


 
AlexeyT ©   (2006-02-28 12:34) [2]

2umbra
Ты имеешь в виду, делать Show/Hide, вместо ShowModal?
Нет, мне нужно форму показывать именно в _модальном_ режиме, Show не подходит.


 
tesseract ©   (2006-02-28 12:54) [3]


> Правильно ли делать Close прямо из OnShow, или можно это
> сделать как-то по-другому? Как?


Close в OnShow работать и не должен.

Вызыви  форму немодально, отработай, потом вызови функцию вызвавшей формы которая её закроет.

Или брось на форму таймер и закрывай из него.


 
AlexeyT ©   (2006-02-28 13:00) [4]

2tesseract
Вызвать форму немодально я могу, но тогда юзер сможет переключаться на основную форму в процессе работы этой, что нежелательно. Желательно вызывать модально.

С таймером - хорошая мысль...


 
clickmaker ©   (2006-02-28 13:59) [5]


> 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;


 
Desdechado ©   (2006-02-28 14:00) [6]

а смысл создавать форму, чтоб она отработала без участия пользователя и закрылась?
может, проще написать функцию без визуальных эффектов?


 
Гошик Кувшинов   (2006-02-28 14:48) [7]

потому что по умолчанию close не закрывает, а только прячет форму т.е. делает ей hide (а она в этот момент и так невидима), а потом дельфя после onshow снова делает ей show и она показывается. если надо чтобы close закрыла форму из onshow, перекрой onclose и устанавливай там action := cafree


 
tesseract ©   (2006-02-28 17:18) [8]


> С таймером - хорошая мысль...

Сам так и делаю.


 
AlexeyT ©   (2006-02-28 22:17) [9]

В общем, сделал старт/стоп процесса по таймеру. Вроде все работает, спасибо.


 
Anatoly Podgoretsky ©   (2006-02-28 22:56) [10]

AlexeyT ©   (28.02.06 12:34) [2]
Обманываешь ты нас
Нет, мне нужно форму показывать именно в _модальном_ режиме


 
AlexeyT ©   (2006-03-01 09:47) [11]

Anatoly Podgoretsky

Нет, не обманываю.
Форма показывается в _модальном_ режиме, через ShowModal, на форме таймер, который запускает выполнение моей процедуры и по окончании вызывается Close. Все работает, что не так?


 
Ega23 ©   (2006-03-01 09:56) [12]


> Все работает, что не так?


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


 
Mikhail V ©   (2006-03-01 09:56) [13]

>Все работает, что не так?
Все не так :)


 
AlexeyT ©   (2006-03-01 10:52) [14]


> Зачем форма-то нужна? Модальная?

Затем:
- юзеру нужна возможность прервать кнопкой процесс,
- возможность видеть прогресс-бар.


 
clickmaker ©   (2006-03-01 11:05) [15]


> Затем:
> - юзеру нужна возможность прервать кнопкой процесс,
> - возможность видеть прогресс-бар.

и где здесь нужно закрытие из OnShow?


 
msguns ©   (2006-03-01 11:06) [16]

Похоже, что форма "сплэшная".
Если так, то почему бы не сделать ее показ по обычному стандарту (как у Тексейры, например)


 
AlexeyT ©   (2006-03-01 14:04) [17]


> и где здесь нужно закрытие из OnShow?

Я уже сказал: сначала было сделано как запуск/закрытие из OnShow, и это не работало. Вопрос был: как сделать лучше. Подсказали.


> Похоже, что форма "сплэшная".
> Если так, то почему бы не сделать ее показ по обычному стандарту
> (как у Тексейры, например)

Не в курсе, что значит "по обычному стандарту"?


 
msguns ©   (2006-03-01 14:40) [18]

>AlexeyT ©   (01.03.06 14:04) [17]
>Не в курсе, что значит "по обычному стандарту"?

Все делается в файле проекта



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

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

Наверх




Память: 0.51 MB
Время: 0.045 c
15-1140421884
Knight
2006-02-20 10:51
2006.03.19
Помогите выбрать мать...


15-1141063523
Некто
2006-02-27 21:05
2006.03.19
Подбор слов по выбранной тематике


4-1135609267
sand
2005-12-26 18:01
2006.03.19
Рисунок на кнопке


15-1140721369
ArtemESC
2006-02-23 22:02
2006.03.19
Иконки Delphi...


15-1140544531
DSKalugin
2006-02-21 20:55
2006.03.19
По аське прислали :-)) оферисты