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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.03 c
1-1089984574
Term
2004-07-16 17:29
2004.08.01
DBGrid


3-1089275249
MIK
2004-07-08 12:27
2004.08.01
Индексы в Paradox


6-1085918955
Klev
2004-05-30 16:09
2004.08.01
Отправка письма с вложением средствами Winsock API


4-1087876799
Vitt_lay
2004-06-22 07:59
2004.08.01
Работа с COM-портом в потоке


1-1089895796
Курдль
2004-07-15 16:49
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский