2010-11-17 6 views
1

HFText est une chaîne tandis que HTMLViewer1 est le THTMLviewer.Comment afficher une image dans THTMLViewer?

HFText:= '<html><head><style>'+ 
       'body {font: Arial 8pt;}'+ 
       '</style></head>'+ 
       '<body marginwidth="0">'+ 
       '<img src="http://10.0.0.20/picture/1.jpg" />'+ 
       '</body></html>'; 

    HTMLViewer1.LoadFromString(HFText); 

La sortie de ceci montre un point d'exclamation (pas l'image que je veux afficher). On m'a dit d'utiliser OnImageRequest mais je ne trouve pas d'exemples pour me montrer quoi faire. Comment puis-je utiliser le OnImageRequest pour montrer l'image?

Répondre

4

HTMLViewer propose plusieurs méthodes de gestion des images.

Le plus simple est de définir un gestionnaire OnImageRequest et en utilisant quelque chose comme le code suivant:

procedure TForm1.HTMLViewer1ImageRequest(Sender: TObject; 
    const SRC: string; var Stream: TMemoryStream); 
var 
    wStrm : TMemoryStream; 
begin 
    wStrm := TMemoryStream.create; 
    try 
    IdHTTP1.Get(Src, wStrm); 
    Stream := wStrm; 
    except 
    wStrm.free; 
    Stream := Nil; 
    end; 
end; 

Le code ci-dessus suppose que vous avez déjà un composant IdHTTP1 sur le formulaire pour obtenir des choses ou vous pouvez également charger à partir d'un TFileStream.

La valeur de SRC sera, dans votre exemple, "http://10.0.0.20/picture/1.jpg".

Vous ne libérez pas le flux créé, HTMLViewer le gère pour vous. Je libère seulement le flux s'il y avait un problème avec le get HTTP.

HTH.

+0

Fonctionne parfaitement. Je vous remercie. :) – Dian

0

Pas de réponse ici, mais voici comment je vais résoudre pour voir si vous faites une erreur de base. Tout d'abord, vérifiez que lorsque vous entrez cette URL dans votre navigateur, vous obtenez l'image. http://10.0.0.20/picture/1.jpg Jusqu'ici tout va bien?

Ensuite, créez un fichier test.htm avec le contenu de votre chaîne. Double-cliquez pour lancer dans votre navigateur. Encore bon?

Ensuite ... cela fonctionne-t-il si vous utilisez une référence de fichier au lieu de http :?

Questions connexes