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 コントロールのフォント サイズを変更する方法
※例によって機械翻訳されたものです。