2010-10-18 4 views
5

J'ai trouvé un comportement étrange dans le composant TwebBrowser, lorsque je charge certaines pages avec des polices plus grandes. différent de ce qui est utilisé dans Internet Explorer.Page de chargement TWebrowser avec grandes polices

voir ces images échantillons

Ici, dans ce lien http://docwiki.embarcadero.com/RADStudio/en/Main_Page est chargé avec les polices plus grandes et TWebBrowser avec de petites polices (un autre style) dans IE.

alt text

cette page https://stackoverflow.com/ est chargée de même style dans le composant TWebBrowser et IE.

alt text

Je l'ai essayé sur différentes machines et même chose.

comment puis-je résoudre ce problème? c'est un problème avec un CSS?

Répondre

1

Je pense que le problème est que le composant TWebBrowser exécute Internet Explorer en mode de compatibilité. En effet, si vous ouvrez la page docwiki dans Internet Explorer 8 et versions ultérieures, les polices sont petites et agréables, contrairement à leur apparence dans le TWebBrowser. Mais si vous cliquez sur le bouton "Affichage de compatibilité" dans la fenêtre Internet Explorer, vous obtiendrez le même texte volumineux que dans le composant TWebBrowser. (. Il est bien connu que IE6 utiliser du texte trop grand)

Selon this MSDN blog entry et the MSDN docs, pour contrôler le mode de compatibilité du contrôle TWebBrowser, utilisez le Registre:

procedure TForm3.FormCreate(Sender: TObject); 
begin 

    with TRegistry.Create do 
    try 
     RootKey := HKEY_CURRENT_USER; 
     if OpenKey('Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION', true) then 
     WriteInteger(ExtractFileName(Application.ExeName), 8888); 
    finally 
     Free; 
    end; 

    WebBrowser1.Navigate('http://docwiki.embarcadero.com/RADStudio/en/Main_Page'); 
end; 

Les valeurs sont 8000, 7000 et 8888 pour "IE8 Standards Mode", "IE7 Standards Mode" et "IE8 Standards Mode (Forced)", respectivement. Par conséquent, le code ci-dessus va forcer le mode standard IE8. Cependant, de façon surprenante, le réglage du mode à la norme ne fera que rendre la police encore plus grande.

+0

Andreas, merci pour votre commentaire sur le 'mode de compatibilité', mais pourquoi certaines pages ont le même style et la même police quand elles fonctionnent en 'mode de compatibilité'? – Salvador

0

je fixe normalement en réglant le ZOOM:

WebBrowser1.ExecWB(OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, zoom); 

Vous devez utiliser OLECMDID_GETZOOMRANGE pour déterminer les plages valides pour zoom. Lisez les remarques sur MSDN documentation pour plus d'informations.