3

TFormにTWebBrowserを埋め込んでいます。Altボタンを押すたびに、ブラウザウィンドウが白くなります。フォームをドラッグすると、正しく再描画されます。

私が間違っていることは何ですか?

それが重要な場合、私はDevExpressバーとクォンタムグリッドを持っていますか?

私はDelphi2010とWindows7およびXPSP2を使用しています。IEのバージョンは7と8です。すべてで再現可能です。

Altキーを押す前に: Altキーを押す前

Altキーを押した後:

Altキーを押した後

私は以下を使用してそれを解決しました:

procedure TMainForm.WndProc(var Message: TMessage);
begin
  inherited WndProc(Message);
  if Message.Msg = WM_UPDATEUISTATE then
  begin
    if Assigned(ProblematicWebBrowser) then
      ProblematicWebBrowser.Repaint;
  end;
end;
4

2 に答える 2

3

使用している Delphi のバージョン、使用している Windows のバージョン、またはインストールした IE のバージョン ( TWebBrowser がラップするもの) については言及しません。(一般的な注意として、あなたはここにいる新しいユーザーなので、このような質問をするときは、より多くの情報を提供する必要があります。このバグを報告しているソフトウェアのユーザーであると仮定してください。手を上げて「ああ、再現されていません。なぜ彼らは何をしているのか教えてくれませんか?」あなたの質問を読むときも同じです。)

とはいえ、Altキーを押すと消えるのがヒントです。Windows には、ユーザーが Alt キーを押すまでアクセラレータ キー ([ファイル] メニューの下線付き F などの下線マーク) を非表示にするオプションがあります。その場合、何かが変更されたことを示すWM_DRAWITEMメッセージがコントロールに送信されます。WM_CHANGEUISTATEも参照してください。

これを処理する Delphi の過去のバージョンにはバグがありました(この例のバグを参照)。これには、Alt キーを押すとコントロールが完全に消えるというバグが含まれていました。TWebBrowser はその QC 項目には記載されていませんが、影響を受ける可能性は十分にあります。

だから私の推測は次のとおりです。

  • Delphi 7 以前を使用している
  • XP 以上を使用していて、テーマを実行している
  • TWebBrowser コントロールまたはその親に影響を与えるこのバグが発生しています。

解決策: Delphi をアップグレードするか、QC 項目に記載されている修正を適用します。

于 2010-09-10T05:06:54.457 に答える
0

FWIW、D2010 の TWebBrowser を備えたプレーンなバニラ フォームでは、Alt を押しても WebBrowser の表示には影響しません。

于 2010-09-09T22:34:11.163 に答える