![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый день. У меня есть проблема. Никогда раньше с потоками не работал, почитал кое-что, понял мало что
. Проблема в следующем:У меня есть событие. При нажатии на кнопку загружаю HTML код более 18 страниц и выполняю над ними некоторые операции. Скорость загрузки страниц меня вполне устраивает, проблема в другом. При загрузке как сделать так, чтобы интерфейс программы не подвисал и отвечал на действия пользователя? Заранее благодарен |
|
#2
|
|||
|
|||
|
Между получением каждой страницы (или между получением пакетов), вставь код:
Код:
Application.ProcessMessages; |
|
#3
|
|||
|
|||
|
не всегда поможет)
при загрузки через TWebBrowser даже одной страницы зависает интерфейс... Код:
for i:=0 to 1995+1 do
begin
webbrowser1.navigate('localhost');
Application.ProcessMessages;
if application.terminated then break; //если юзер закрыл прогу то остановляем цикл
end;
![]() |
|
#4
|
||||
|
||||
|
А если так:
Код:
type
TWebAgent = class(TThread)
private
Browser: TWebBrowser;
public
procedure Execute; override;
end;
TForm3 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
Label1: TLabel;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
Web: TWebAgent;
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TWebAgent.Execute;
begin
Browser.Navigate('http:\\localhost');
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
Timer1.Enabled := True;
Web.Resume;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
Web := TWebAgent.Create(True);
Web.Browser := WebBrowser1;
end;
procedure TForm3.Timer1Timer(Sender: TObject);
begin
Label1.Caption := TimeToStr(Now);
Application.ProcessMessages;
end; |
|
#5
|
|||
|
|||
|
Вот так то норм...
еще таймер ![]() |
|
#6
|
|||
|
|||
|
application.processmessages если добавить в таймер то это круто будет)))
круто придумали! и в таймере поставим интервал 1 и будет происходит application.processmessages каждые 1 миллисекунды и вообще не будет глючит форма ![]() |
|
#7
|
||||
|
||||
|
Ну таймер там только для проверки отсутствия паузы во время загрузки страницы.
|