Comment rendre l'élément HTML sans utiliser le navigateur web?
-
25-10-2019 - |
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?
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