主な問題は更新頻度であるため、頻度を下げる必要があります。このためには、HTML ドキュメントを最後に更新した時間を単純に保存し、次のデータ変更時にその時間から一定期間が経過したかどうかを確認できます。
これを行う方法を示すコードを次に示します。次のFUpdatePeriod
例の は、ミリ秒単位の更新期間です。UpdateChanges
を定期的に呼び出すと、innerHTML
最後の変更から少なくとも 1000 ミリ秒経過した場合にのみ、(ここでは疑似コード) が更新されます。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MSHTML, OleCtrls, SHDocVw;
type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
procedure FormCreate(Sender: TObject);
private
FLastUpdate: Cardinal;
FUpdatePeriod: Cardinal;
procedure UpdateChanges(const AData: WideString);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
FUpdatePeriod := 1000;
end;
procedure TForm1.UpdateChanges(const AData: WideString);
begin
if (GetTickCount - FLastUpdate > FUpdatePeriod) then
begin
(WebBrowser1.Document as IHTMLDocument2).body.innerHTML := AData;
FLastUpdate := GetTickCount;
end;
end;
// now remains to call the UpdateChanges periodically
end.