![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подвисание формы
товарищ вася © (2009-05-18 08:50:00)Здравствуйте товарисчи!
Проблемка такая: при показе второй формы (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;
А теперь уважаемые знатоки вопрос:
Кто виноват, и что делать?
товарищ вася (2009-05-18 09:06:00) [1]Большое спасибо!
Сергей М. (2009-05-18 09:02:00) [2]for i:=0 to richedit1.Lines.Count-1 do
begin
// убери все вызовы Refresh и Repaint
..
Application.Processmessages;// этот метод "оживит" все формы
end;
MonoLife (2009-05-18 09:00:00) [3]Application.ProcessMessage