ブラウザをスクロールしたい、スクロール位置を取得したい


すくろーら  2004-03-03 22:14:18  No: 7521

ブラウザをスクロールさせたい、スクロール位置を取得したい


にしの  2004-03-03 22:20:51  No: 7522

ブラウザと言っても、たくさんありますよ。


るるとん@K  2004-03-04 02:47:29  No: 7523

何も書いて無いので、TWebBrowserでしょう。


Mr.XRAY  URL  2004-03-04 03:35:42  No: 7524

>何も書いて無いので、TWebBrowserでしょう。

いや,起動しているIEの画面をDelphiのコードでスクロールしたいと
いうことではないのでしょうか.

私には方法がわかりませんが.


にしの  2004-03-04 18:42:11  No: 7525

> いや,起動しているIEの画面をDelphiのコードでスクロールしたいと
> いうことではないのでしょうか.

> 私には方法がわかりませんが.

複数でなければ、OLEでIEのインスタンスを取得し、documentを操作すれば出来そうです。
# DOMの知識が必要です
NNやOperaにOLEが実装されているかわかりません。
OLEで無い場合、FindWindow, FindWindowExで対象となるウィンドウを取得し、スクロールメッセージかキーダウン/アップメッセージを送信すればできそうです。

TWebBrowserであれば、DocumentプロパティをIHTMLElementインターフェースなどとして操作すればできると思いますが、TWebBrowserよりTUIWebBrowserのほうが使い勝手は良いと思います。
# DOMの知識が必要です


koma2  2004-03-19 00:15:47  No: 7526

私はTWebBrowserをスクロールさせるために、次のような関数を使っています。
内部の処理を見てもらえれば、位置の取得もスクロール方法も分かると思います。

※usesにShDocVwとMSHTML_TLBを追加してください

Web: スクロールさせるTWebBrowser
X,Y: スクロールの増分

function WebScroll( Web: TWebBrowser; X, Y: Integer ): Boolean;
var
  X0, Y0: Integer;
  XMax, YMax: Integer;
  WebDoc: IHTMLDocument2;
  Body: OleVariant;
  X1, Y1: Integer;
begin
  WebDoc := Web.Document as IHTMLDocument2;
  Body := OleVariant( WebDoc ).body;

  Result := True;

  X0 := body.ScrollLeft;
  Y0 := body.ScrollTop;
  XMax := body.ScrollHeight-body.ClientWidth;
  YMax := body.ScrollHeight-body.ClientHeight;

  X1 := X0 + X;
  Y1 := Y0 + Y;

  if( Y < 0 )and( body.ScrollTop <= 0 )then begin
    Y1 := 0;
    Result := False;
  end else
  if( Y > 0 )and( body.ScrollTop >= YMax )then begin
    Y1 := YMax;
    Result := False;
  end;

  if( X < 0 )and( body.ScrollLeft <= 0 )then begin
    X1 := 0;
    Result := False;
  end else
  if( X > 0 )and( body.ScrollLeft >= XMax )then begin
    X1 := XMax;
    Result := False;
  end;

  WebDoc.parentWindow.scroll( X1, Y1 );
end;


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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