按Alt键清除嵌入的TWebBrowser

时间:2010-09-09 21:22:09

标签: delphi key delphi-2010 twebbrowser

我在TForm中嵌入了TWebBrowser。 每当我按Alt键时,浏览器窗口变为白色。如果我拖动它周围的形式重绘正确。

我做错了什么?

如果重要,我有DevExpress Bars和Quantum Grid吗?

我使用的是Delphi 2010和Windows 7以及XP SP2。 IE版本为7和8.可重现。

在按Alt之前: Before pressing the Alt

按下Alt:

After pressing 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;

2 个答案:

答案 0 :(得分:3)

您没有说明您正在使用的Delphi版本,您正在使用的Windows版本,或者您安装的IE版本,what TWebBrowser wraps。 (作为一般性说明,因为你是这里的新用户,在提出这样的问题时你真的需要提供更多的信息。假设你的软件用户报告了这个错误 - 你会举起手来说“呸,没有复制。为什么他们不能告诉我他们在做什么?“在阅读你的问题时我们也一样。”

但是,那就是说,当你按Alt键时它消失的事实是一个暗示。 Windows可以选择隐藏加速键(下划线标记,如文件菜单上带下划线的F),直到用户按下Alt键。如果是这样,控件会发送一条WM_DRAWITEM消息,指示已更改的内容。另请参阅WM_CHANGEUISTATE

过去版本的Delphi中存在一些错误(see this example bug),包括controls completely vanished when the Alt key was pressed的错误。 TWebBrowser未在该QC项目中列出,但它很可能受到影响。

所以我的猜测是:

  • 您使用的是Delphi 7或更早版本
  • 您正在使用XP或更高版本,并正在运行 主题的
  • 你遇到了this bug, 哪个影响了 TWebBrowser控件或其父级

解决方案:升级Delphi或应用the QC item中列出的修补程序。

答案 1 :(得分:0)

FWIW,在D2010中使用带有TWebBrowser的普通香草表格,按Alt键对WebBrowser显示无效。