TWebBrowser上のExcelの再描画

解決


SAKURA  2007-03-15 19:51:05  No: 25327

http://homepage2.nifty.com/Mr_XRAY/Delphi/plExcel/index.htm

にある、Excel操作の[テストプログラム等]にある
表示の基本のコードを参考にTWebBrowser上でExcelを表示し
編集することはできました。

このソースにForm2を作成してボタンから

Form2.Show

とやると、TWebBrowser上のExcelの動作がおかしくなります。
アドレスバーの部分の表示がおかしくなったり、
セルの選択がうまくできなかったり・・・
おそらく、再描画ができていないためと思われますが、
FormActiveでRefreshなどとするとエラーになったり
うまくいきません。

TWebBrowser上のExcelの表示を正常にするにはどうしたらよいでしょうか?


艦橋異存?  2007-03-16 06:10:53  No: 25328

そんなおかしな動作はしないけど、どうやったら再現できる?


SAKURA  2007-03-16 20:15:58  No: 25329

すみません。調査不足でした。
普通にForm2.Showでは、現象は、起きませんでした。
しかし、Form2にWebBrowserを配置、Form1とは、別の
Excelファイルを用意してForm2のFormShowで
TWebBrowser上に表示させると

Form1のExcelのコマンドバーがクリックできなくなったり
スクロールバーが無くなったり・・・
Excelが二つ起動しているのが問題なのでしょうか?

{Form1での処理  最初の発言のURL参照}
procedure TForm1.BitBtn1Click(Sender: TObject);
var FilePath : String;
begin
   ExcelApplication1.Connect;
   FilePath := ExtractFilePath(Application.ExeName)+'a.xls';
   WebBrowser1.Offline:=True;
   WebBrowser1.Silent:=True;
   try
      WebBrowser1.Navigate(FilePath);
   except
   end;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
   Form2.Show;
end;

{Form2での処理}
procedure TForm2.FormShow(Sender: TObject);
var FilePath : String;
begin
   ExcelApplication1.Connect;
   FilePath := ExtractFilePath(Application.ExeName)+'b.xls';
   WebBrowser1.Offline:=True;
   WebBrowser1.Silent:=True;
   try
      WebBrowser1.Navigate(FilePath);
   except
   end;
end;


SAKURA  2007-03-16 20:17:57  No: 25330

Form1でコマンドバーの表示部分が抜けてました。

procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
   ExcelWorkbook1.ConnectTo
       (ExcelApplication1.ActiveWorkbook as _workbook);
   ExcelWorksheet1.ConnectTo
       (ExcelApplication1.ActiveWorkbook.Activesheet as _worksheet);
   ExcelWorkSheet1.Activate;
  //コマンドバーの表示  
   WebBrowser1.ExecWB(OLECMDID_HIDETOOLBARS, OLECMDEXECOPT_DONTPROMPTUSER);
end;


SAKURA  2007-03-20 00:13:58  No: 25331

http://support.microsoft.com/kb/304643/ja

どうやら、仕様のようです。
設計を見直します。

1 つのプロジェクト内で複数の WebBrowser コントロールを使用する場合、各コントロールに同じ種類の Office ドキュメント (すべて Word 文書、すべて Excel スプレッドシートなど) を読み込むと、いくつかの問題が発生することが確認されています。そのため、1 つのプロジェクトに使用するコントロールは 1 つとし、1 度に参照するドキュメントも 1 つとすることをお勧めします。


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

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






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