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

Вниз

Showmodal   Найти похожие ветки 

 
Vilux   (2004-07-21 07:41) [0]

Такая проблема - вызываю форму методом Showmodal, чтобы она постоянна была активна, в методе OnActivate этой формы делаю некоторые операции, но потом не могу закрыть форму. Т.е.

procedure TWaitF.FormActivate(Sender: TObject);
begin
 ...
 ...
 ...
 Close;
end;

не работает :( форма все-равно висит на экране, Close не срабатывает. Как быть?


 
Alx2 ©   (2004-07-21 07:55) [1]

ModalResult := ....


 
Vilux   (2004-07-21 08:17) [2]

пробовал  даже так...
procedure TWaitF.FormActivate(Sender: TObject);
begin
 modalresult:=mrOk;
 close;
end;
Не работает... форма не закрывается.


 
Alx2 ©   (2004-07-21 08:22) [3]

В Activate не получится


 
HanIP   (2004-07-21 08:24) [4]

Напиши что ты пишешь в теле
procedure TWaitF.FormActivate(Sender: TObject);
begin
...
...
...
Close;
end;


 
Reindeer Moss Eater ©   (2004-07-21 08:28) [5]

не закрывай форму в OnActivate


 
Anatoly Podgoretsky ©   (2004-07-21 08:55) [6]

Vilux   (21.07.04 07:41)  
Тебе вообще не нужна форма


 
Vilux   (2004-07-21 08:55) [7]

Да в теле  я могу вообще ничего не писать, как указал выше, даже просто Close не работает. Тогда вопрос, а где мне это писать? Чтобы и форма показалась окончательно и закрылась потом? На форме нет никаких кнопок, она просто должна показывать индикатор прогресаа,а когда вычисления закончатся, она должна закрыться. Вместо ... как раз идут вычисления, а на форме отображается прогресс, но потом форма не закрывается. В каком событии тогда ее закрывать?


 
Vilux ©   (2004-07-21 09:07) [8]

Anatoly Podgoretsky, как это не нужна? Там индикатор процесса отображается...


 
Reindeer Moss Eater ©   (2004-07-21 09:07) [9]

даже просто Close не работает

не закрывай форму в OnActivate


 
Anatoly Podgoretsky ©   (2004-07-21 09:11) [10]

Vilux   (21.07.04 08:55) [7]
Чтобы форма показалась, требуются что бы до конца отработали обработчики событий OnActivate/OnShow - это можно обеспечить двумя путями
1. поставить на форму таймер с небольшой задержкой и в его обработчике выполнить необходимые расчеты и индикацию
2. послать самому себе сообщение функцией PostMesssge и в его обработчики выполнить всю работы.

В однои из выше указаных обработчив можешь последним действием закрыть форму. А вот насчет кнопок это не совсем верно, может произойти какая либо проблема и форма останется подвисшей и будет снимать задачу комбинацией из трех пальцев.


 
Vilux ©   (2004-07-21 09:14) [11]

Народ, да я понял, что не надо закрывать в OnActivate, но где тогда? В OnShow тоже не работает Close... Может тогда посоветуете, как мне сделать, чтобы форма висела поверх главной формы, чтобы на ней можно было менять индикатор прогресса, а когда надо - закрыть...и чтобы в этот момент, пока она висит, была только она активна.


 
Vilux ©   (2004-07-21 09:27) [12]

Спасибо, реализовал через PostMessage, вроде то, что надо...


 
Space Hunter   (2004-07-21 11:53) [13]

Делай всю обработку в главной форме. Вот пример:

procedure MainForm.Processing;
begin
 ProgressForm := TProgressForm.Create(Self);
 try
   ProgressForm.Show;
   // Здесь делаем обработку, периодически обращаясь к
   // ПрогрессБару:
   ProgressForm.ProgressBar.Position := xx;
   ProgressForm.ProcessMessages;
   ...
 finally
   ProgressForm.Free;
 end;
end;

Еще на ProgressForm можна (и даже нужно) разместить кнопку с возможностью прерывания процесса пользователем.

Ну что-то типа того...


 
CTAPbIi   (2004-07-21 12:09) [14]

http://delphimaster.net/view/1-1089804769/



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

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

Наверх




Память: 0.49 MB
Время: 0.033 c
9-1081946541
Pavelius
2004-04-14 16:42
2004.08.01
Алгоритм нахождения


3-1087832937
ceval
2004-06-21 19:48
2004.08.01
DBGrid показено только несколько полей,а как другие поля таблицы


1-1089790621
Kolan
2004-07-14 11:37
2004.08.01
Зашита


1-1089874266
Dysan
2004-07-15 10:51
2004.08.01
распознаване текста


6-1086249505
AnatolyP
2004-06-03 11:58
2004.08.01
Клиент-серверное приложение с поддержкой БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский