Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];

Вниз

Как закрыть форму из 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.013 c
15-1140817487
kent
2006-02-25 00:44
2006.03.19
железо


4-1135365676
pol
2005-12-23 22:21
2006.03.19
Datecs fp3530t


4-1135879049
Антон(заяц)
2005-12-29 20:57
2006.03.19
Мастера помогите вывести сообщение из трея....


11-1121271836
Dodfr
2005-07-13 20:23
2006.03.19
TabOrder form context menu error


6-1133858903
Alexandr
2005-12-06 11:48
2006.03.19
выбор технологии для обмена данными





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский