« ☆TToolButtonの実行時作成&削除 | トップページ | ☆プロジェクトのバージョン番号が設定できない。 »

☆TWebBrowserのフォントサイズ変更

TWebBrowserのフォントサイズを実行時にアプリ側から変更するサンプルです。ついでに現在のフォントサイズを取得する処理も書いてみました。フォントサイズについては、よくわからないのですが、下記のサイトで0~4となっていて、IEの「文字のサイズ」が5段階であることから、これに該当すると勝手に判断しています。
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    WebBrowser1: TWebBrowser;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure WebBrowser1DocumentComplete(ASender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
  private
    F: Boolean;
    function GetFontSize: Integer; 
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // ComboBox1の設定
  ComboBox1.Items.Clear;
  ComboBox1.Style := csDropDownList;
  ComboBox1.Items.AddObject('最小',TObject(0));
  ComboBox1.Items.AddObject('小'  ,TObject(1));
  ComboBox1.Items.AddObject('中'  ,TObject(2));
  ComboBox1.Items.AddObject('大'  ,TObject(3));
  ComboBox1.Items.AddObject('最大',TObject(4));
  F := False;
  // delphi-fanはサイズの違いがわかりにくいです(^^;
  // 適当に変えて下さい。
  WebBrowser1.Navigate('http://hiderin.air-nifty.com/delphi/');
end;

// 現在のフォントサイズを返します。
function TForm1.GetFontSize: Integer;
var
  Size: OleVariant;
begin
  WebBrowser1.ExecWB(OLECMDID_ZOOM,
    OLECMDEXECOPT_DONTPROMPTUSER, EmptyParam, Size);
  Result := Size;
end;

procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  // プログラム起動時に現在のフォントサイズを設定します。
  if not F then
  begin
    ComboBox1.ItemIndex := GetFontSize;
    F := True;
  end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
  Size: OleVariant;
begin
  // フォントサイズを変更します。
  Size := Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
  WebBrowser1.ExecWB(OLECMDID_ZOOM,
    OLECMDEXECOPT_DONTPROMPTUSER, Size, EmptyParam);
end;

end.

この処理の問題点としては、TWebBrowserを使う他のアプリケーションにまで、ここで設定したフォントサイズが 影響することです。(IEには、影響しません)
影響を受けていないように見せるためには、アプリケーション毎に INIファイル等で設定を保存する必要がありそうです。ちょっと面倒です(笑)

Microsoft
サポート オンライン
Visual Basic アプリケーション内にホストされた WebBrowser コントロールのフォント サイズを変更する方法
※例によって機械翻訳されたものです。

|

« ☆TToolButtonの実行時作成&削除 | トップページ | ☆プロジェクトのバージョン番号が設定できない。 »