2010-09-09 30 views
3

J'ai TWebBrowser intégré dans un TForm. Chaque fois que j'appuie sur le bouton Alt, la fenêtre du navigateur devient blanche. Si je fais glisser le formulaire autour, il repeint correctement.L'appui sur Alt efface le TWebBrowser intégré

Qu'est-ce que je fais mal?

Je Bars DevExpress et Grille Quantum si cette matière?

J'utilise Delphi 2010 et Windows 7 et XP SP2. La version IE est 7 et 8. Reproductible sur tous.

Avant d'appuyer sur Alt: Before pressing the Alt

Après avoir appuyé sur Alt:

After pressing Alt

J'ai résolu par usnig les éléments suivants:

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; 

Répondre

3

Vous ne dites pas quelle version de Delphi vous utilisez, quelle version de Windows vous utilisez, ou quelle version d'IE vous avez installée, qui est what TWebBrowser wraps. (En général, parce que vous êtes un nouvel utilisateur ici, vous devez vraiment fournir plus d'informations lorsque vous posez une question comme celle-ci.) Imaginez que ce soit un utilisateur de votre logiciel qui signale ce bug. Bah, pas reproduit, pourquoi ne peuvent-ils pas me dire ce qu'ils font? "Idem pour nous en lisant votre question.)

Mais, cela dit, le fait qu'il disparaisse lorsque vous appuyez sur la touche Alt est un indice . Windows a une option pour masquer les touches de l'accélérateur (la marque de soulignement, comme le soulignement F dans un menu Fichier) jusqu'à ce que l'utilisateur appuie sur la touche Alt. Quand c'est le cas, les contrôles reçoivent un message WM_DRAWITEM indiquant que quelque chose a changé. Voir aussi WM_CHANGEUISTATE.

Il y a eu des bogues dans les versions précédentes de Delphi gérant ceci (see this example bug) incluant un bug où controls completely vanished when the Alt key was pressed. TWebBrowser n'est pas répertorié dans cet élément de contrôle qualité, mais il est possible qu'il soit affecté.

Donc je suppose:

  • Vous utilisez Delphi 7 ou plus tôt
  • Vous utilisez Windows XP ou au-dessus, et en cours d'exécution à thème
  • vous rencontrez this bug, qui est affectant le contrôle TWebBrowser ou un parent de celui-ci

Solution: mettre à niveau Delphi ou appliquer le correctif listé au the QC item.

+0

Je suis d'accord. La question est trop générique. Je vais essayer d'isoler le problème dans un exemple d'application. 10x pour les liens. –

+0

Pas de soucis, content que cela ait aidé. –

0

FWIW, avec un formulaire de plain vanilla avec un TWebBrowser dans D2010, l'appui sur Alt n'a aucun effet sur l'affichage de WebBrowser.

+0

Il n'est pas non plus affecté dans D2009 sous XP, IE8. – stevenvh