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

Вниз

Подвисание формы   Найти похожие ветки 

 
товарищ вася   (2009-05-18 08:50) [0]

Здравствуйте товарисчи!
Проблемка такая: при показе второй формы (fWait) она зависает, а на этой форме находится прогрессБар ... рефреширую форму каждый раз но всё равно виснет...
Самое прикольное что когда из дельфи запускаешь он не подвисает...

procedure TForm1.ParseRepaintClick(
 Sender: TObject);
var i:integer; cd,cr:Real;
begin
     richedit2.Clear;
     RichEdit1.Lines.BeginUpdate;
     RichEdit2.Lines.BeginUpdate;
     loading:=true;
     fWait.Show; cr:=0; cd:=GetCurrentTime; fWait.Position:=poMainFormCenter;
     for I:=0 to richedit1.Lines.Count-1 do
     begin
     fWait.Refresh; Form1.Refresh;  fWait.Repaint; Form1.Repaint;  FWait.Caption:="REPAINTING...";
     fWait.ProgressBar1.Position:=trunc(i*100 / richedit1.Lines.Count);
     cr:=GetCurrentTime-cd;
     fWait.Label2.Caption:=floattostr(trunc((i/(cr+0.001))*1000)) ;
     fwait.Label1.Caption:=floattostr(trunc(cr) / 1000);
     fWait.Label6.Caption:=Floattostr(trunc(cr/1000*((richedit1.Lines.Count-1)/(i-0.001)-1)));
     colorize(i);
     end;
     cr:=0; cd:=GetCurrentTime;
     for i:=0 to richedit1.Lines.Count-1 do
     begin
     fWait.Refresh; Form1.Refresh; fWait.Repaint; Form1.Repaint;   FWait.Caption:="PARSING...";
     fWait.ProgressBar1.Position:=trunc(i*100 / richedit1.Lines.Count);
     cr:=GetCurrentTime-cd;
     fWait.Label2.Caption:=floattostr(trunc((i/(cr+0.001))*1000)div 1) ;
     fwait.Label1.Caption:=floattostr(trunc(cr) div 1000);
     fWait.Label6.Caption:=Floattostr(trunc(cr/1000*((richedit1.Lines.Count-1)/(i-0.001)-1)));
     richedit2.lines.Add(encode(richedit1.Lines.strings[i]));
     end;
     loading:=false;
     RichEdit1.Lines.EndUpdate;
     RichEdit2.Lines.EndUpdate;
     richedit2.SelStart:=0;
     richedit1.SelStart:=0;
     fWait.Hide;
end;

А теперь уважаемые знатоки вопрос:
Кто виноват, и что делать?


 
MonoLife ©   (2009-05-18 09:00) [1]

Application.ProcessMessage


 
Сергей М. ©   (2009-05-18 09:02) [2]

for i:=0 to richedit1.Lines.Count-1 do
begin
 // убери все вызовы Refresh и Repaint
..
 Application.Processmessages; // этот метод "оживит" все формы
end;


 
товарищ вася   (2009-05-18 09:06) [3]

Большое спасибо!



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

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

Наверх




Память: 0.47 MB
Время: 0.011 c
15-1240884969
dmk
2009-04-28 06:16
2009.07.05
PHP и параметры строки


10-1158657335
Krants
2006-09-19 13:15
2009.07.05
"Selection.End(xlDown).Select" в Excel


15-1241542032
Mozart
2009-05-05 20:47
2009.07.05
flash


11-1203580173
Tolyan
2008-02-21 10:49
2009.07.05
Создание формы визуально в KOL


15-1241243335
MaltiGre
2009-05-02 09:48
2009.07.05
Извлечение отдельных файлов из архива