Нажатие Alt очищает встроенный TWebBrowser - PullRequest
3 голосов
/ 10 сентября 2010

У меня есть TWebBrowser, встроенный в TForm.Всякий раз, когда я нажимаю кнопку Alt, окно браузера становится белым.Если я перетаскиваю форму, она перерисовывается правильно.

Что я делаю неправильно?

У меня есть DevExpress Bars и Quantum Grid, если это важно?

Я использую Delphi 2010 иWindows 7 и XP SP2.IE версии 7 и 8. Воспроизводимые на всех.

До нажатия Alt: Before pressing the Alt

После нажатия Alt:

After pressing Alt

Iрешили это с помощью следующего:

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 ]

3 голосов
/ 10 сентября 2010

Вы не говорите, какую версию Delphi вы используете, какую версию Windows вы используете или какую версию IE вы установили, то есть , которую TWebBrowser переносит . (Как общее примечание, потому что вы здесь новый пользователь, вам действительно нужно предоставить больше информации, когда задаете такой вопрос. Представьте, что это был пользователь вашего программного обеспечения, который сообщил об этой ошибке - вы бы подняли руки и сказали " Бах, не воспроизводится. Почему они не могут сказать мне, что они делают? »То же самое для нас, когда вы читаете ваш вопрос.)

Но, тем не менее, тот факт, что он исчезает при нажатии клавиши Alt, является подсказкой. В Windows есть возможность скрывать клавиши ускорения (знак подчеркивания, например подчеркнутая буква F в меню «Файл»), пока пользователь не нажмет клавишу Alt. Когда это происходит, элементам управления отправляется сообщение WM_DRAWITEM , указывающее, что что-то изменилось. Смотрите также WM_CHANGEUISTATE .

В прошлых версиях Delphi были ошибки, связанные с этим ( см. Пример ошибки ), включая ошибку, при которой управление полностью исчезало при нажатии клавиши Alt . TWebBrowser не указан в этом элементе контроля качества, но вполне возможно, что он затронут.

Итак, я думаю:

  • Вы используете Delphi 7 или более раннюю версию
  • Вы используете XP или выше и работаете тематический
  • Вы столкнулись с этой ошибкой , который влияет либо на Элемент управления TWebBrowser или его родитель

Решение: обновите Delphi или примените исправление, указанное в элемент QC .

0 голосов
/ 10 сентября 2010

FWIW, с простой ванильной формой с TWebBrowser в D2010, нажатие Alt не влияет на отображение WebBrowser.

...