OZの部屋

なんでも日記です

TWebBrowser イベントを拾う方法

2006-11-12 23:40:18 | プログラム
TWebBrowser には OnMouseUpやOnMouseDownなどのイベントがない。

HTML内ではイベントを拾っていろいろ出来るのに
Delphiからではお手上げ、
コンポーネントは出来るだけ標準のものを使いたいけれども
embeddedWBを使うしかないかと思っていたら、
いいのを見つけました。
http://delphi.about.com/od/vclusing/a/wbsinkevents.htm

サンプルはmouseover でmouseup ,mousedownではないが、
これでHTMLのイベントをDelphiから使える

mouseup,mousedownを横取りすると
リンク先にジャンプしないので自分でURLを設定してやるか、
なにかもうひとつうまい方法をみつけなければ。

それと、HTML内のスクリプトでイベントトラップしている場合どうなるか。
まだ未検証。

今日はこれまでっ

TwebBrowserメモ

2006-11-12 11:43:12 | プログラム
空のドキュメントを開く
WebBrowser1.Navigate('about:blank');

TWebBrowser の Document を使う
参考:
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects.asp

最初に
  wbdoc:OLEVariant;
  wbdoc:=WebBrowser1.OleObject.Document;
  または
  wbdoc:=WebBrowser1.Document as IHTMLDocument2;

全体のHTMLソースを取得
  wbdoc.documentElement.innerHTML;//ReadOnly
全体のHTMLタグを抜いたテキストのみを取得
  wbdoc.documentElement.innerText;//ReadOnly

  body.innerHTML  <body>abc</body> ならば abc
  body.outerHTML  <body>abc</body> タグ自身を含む

WebBrowserにHTMLソースを流し込む
  wbdoc.Write('<html><head></head><body>abc</body></html>');

HEAD部のHTMLを取得
  wbdoc.all.tags('Head').item(0).innerHtml
  タグ名はcaseignore

BodyにHTMLソースを書き込む
  wbdoc.body.innerHTML:='<font color="#ff0055">abcxyz</font>';

デザインモードにする・解除する
  wbdoc.designMode:='on';// 'off'    または Inherit の値あり

選択範囲のHTMLを取得・設定
  wbdoc.selection.createRange.htmlText
選択範囲のテキストを取得・設定
  wbdoc.selection.createRange.Text

表示倍率設定
  wbdoc.body.Style.Zoom:=0.5;  // 1.0=100%