ブラウザスクロール 終了判定

解決


すけさん  2018-07-19 03:16:44  No: 49299

delphi6 で  ブラウザ表示を下記のような内容でスクロールさせています。
function WebScroll(Web: TWebBrowser; X, Y: Integer): Boolean;
begin
   (Web.Document as IHTMLDocument2).ParentWindow.ScrollBy(X, Y);
end;

スクロールが終了したことを判定させることは可能でしょうか。
やりたいことは、最後までスクロールしたら、最初から表示し直して
繰り返し表示させたいです。

ご教示いただければ幸いです。


Mr.XRAY  2018-07-20 17:12:25  No: 49300

>スクロールが終了したことを判定させることは可能でしょうか。 

「スクロールが終了」の判定というのは分かりませんが,
こんなところが参考になるかも知れません.

[TWebBrowserのスクロール量の取得]
https://www.freeml.com/delphi-users/2486
https://www.freeml.com/delphi-users/2487

後は多分ページの「長さ (高さ ?)」が必要ですね.
こういった HTML 関係の操作は JavaScript のコードを参考にするといいです.
ネットを検索すると結構あります.
Delphi の TWebBrowser で使用可能なコードに変換するのは大変かも知れませんが,
そこは「根性」で乗り切ることになります.

イベントがなければイベントの自作か,
メッセージを自分自身に送って,それを受信ということになると思います.

全て JavaScript でやってしまうという手もあります.
ただし,HTML コードに埋め込む JavaScript のコードであれば制御しやすいですが,
実行時に JavaScript のコードをセットする方法は面倒かも知れません.
実行時にセットする方法は [更新] すると再度 JavaScript をセットする必要があります.
単発の HTML 操作であれば JavaScript コードの実行時セットは有効かも知れません.


すけさん  2018-07-20 18:58:30  No: 49301

Mr.XRAYさん有難うございます。

自己解決しました。
Web.OleObject.Document.documentElement.scrollTop
この値が同じであればスクロールが終了したと
判定するようにしました。


すけさん  2018-07-20 19:01:23  No: 49302

上記内容で自己解決しました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加