Question

Est-il possible comment dessiner le contenu de l'élément HTML spécifique sur une toile sans utiliser le contrôle du navigateur Web?

Avec ce code, je suis rendu l'élément à la toile de la forme (comme un exemple).
Il fonctionne bien, mais ce code n'est pas une bonne pratique - voir ci-dessous, pourquoi ...

uses
  SHDocVw, MSHTML;

procedure TForm1.Button1Click(Sender: TObject);
var
  WebBrowser: TWebBrowser;
  HTMLElement: IHTMLElement;
  HTMLRenderer: IHTMLElementRender;
begin
  WebBrowser := TWebBrowser.Create(nil);
  try
    WebBrowser.ParentWindow := Application.Handle;
    WebBrowser.Navigate('https://stackoverflow.com/questions/2975586/good-delphi-blogs');

    while WebBrowser.ReadyState < READYSTATE_COMPLETE do
      Application.ProcessMessages;

    HTMLElement := (WebBrowser.Document as IHTMLDocument3).getElementById('question');
    HTMLRenderer := (HTMLElement as IHTMLElementRender);
    HTMLRenderer.DrawToDC(Canvas.Handle);

  finally
    HTMLElement := nil;
    HTMLRenderer := nil;
    WebBrowser.Free;
  end;
end;

Il est mauvais parce que

  • il utilise le contrôle caché TWebBrowser , mais je voudrais à la charge le document HTML directement par le IHTMLDocument interface et rendre certains éléments sur ma propre toile
  • si je crée et charge le IHTMLDocument manuellement par exemple, ainsi alors la méthode renderer IHTMLElementRender.DrawToDC ne peint rien (peut-être parce qu'il n'y a pas de toile pour le rendu du document)
  • encore pire est que IHTMLElementRender.DrawToDC est dépréciée à ce moment, donc je suis à la recherche d'une méthode alternative pour le rendu des éléments sur ma toile

Y at-il une manière propre à résoudre ce en utilisant MSHTML?

Était-ce utile?

La solution

IViewObject exigent tous deux le contrôle TWebBrowser pour rendre effectivement la document dans une cible DC.

Autres conseils

Peut-être que vous pouvez essayer THtmlViewer? http://code.google.com/p/thtmlviewer/

Voir THTMLabel de logiciel-tms

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top