Вниз
Скачать: 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 вся ветка

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



Память: 0.49 MB
Время: 0.025 c
15-1140692490
XProger
2006-02-23 14:01
2006.03.19
TForm в 2 кб


2-1141574177
Музыкант
2006-03-05 18:56
2006.03.19
Как написать пианино?


2-1141048509
49 Cent
2006-02-27 16:55
2006.03.19
Какой компонент поможет отобразить график?


8-1129021210
Ajax
2005-10-11 13:00
2006.03.19
Захват звукового вывода


2-1141562841
Делфёст
2006-03-05 15:47
2006.03.19
Глюки после вставки фото




   Наверх