PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Images et champ HTML
Images et champ HTML
Débuté par Mediaweb, 26 mar. 2025 11:25 - 5 réponses
Membre enregistré
8 messages
Posté le 26 mars 2025 - 11:25
Bonjour,

J'ai une application qui affiche des mails et qui jusqu'ici utilisait un champ saisie classique dont le type était changé à "HTML".

Tout fonctionnait correctement mais je me suis aperçu que les liens (URL) s'ouvraient dans le même champ. Je me suis donc interressé aux vrais champs HTML pour pouvoir profiter de l'évènement "clique sur un lien'".

Depuis que j'utilise ce type de champ, j'arrive effectivement à ouvrir les URL dans un navigateur mais je n'arrive plus à afficher les images contenues dans le corps des e-mails.





J'utilise le code suivant pour remplacer les CID par le chemin des images:

sCID = SansEspace("cid:"+ Attachement.Identifiant)
Mess.HTML = Remplace(Mess.HTML, sCID, sCheminPJ + Attachement..Nom, MotComplet + SansCasse)

Ce code fonctionnait très bien avec un champ saisie de type HTML mais plus avec un vrai champ HTML.

Ce que j'ai déjà essayé de faire:

- Ajouter "file:" ou "file:\\ ou file:\\\ devant le chemin des images lors du remplacement du CID. Aucun résultat, l'image ne s'affiche pas.

- J'ai essayé de mettre le champ HTML en mode compatibilité I9/edge. --> Les images s'affichent correctement !! Mais à ce moment là j'ai toutes mes tables de mon écran qui clignottent (un style de flickering) lorsque je passe sur n'importe quel champ ou sur un élément d'une table.

Comment dois-je faire pour afficher correctement mes images dans un vrai champ HTML (pour profiter de l'évenement "clique sur lien" et rester en mode CEF chromium pour éviter ce flickering).

C'est surement une bétise mais je tourne en rond depuis hier.
Merci d'avance pour votre aide !

Greg
Message modifié, 26 mars 2025 - 11:27
Membre enregistré
186 messages
Posté le 26 mars 2025 - 14:34
Bonjour

Je vois votre problème, vous demander comment ajouter une image dans un champ HTML, j'ai une solution en classe pour vous

1. Vous devrez récupérer le chemin de l'image dans le champ vrai HTML

Pour ce cas implémenter ce code dans un bouton ou dans un procédure ou ...
LOCAL
cImage_Html is ClImage_Html
cImage_Html:Afficher_Image(HTM_Image..Nom, fRepExe() + "/Images","IMG_Appareil.png") // EDD (03/25) : les paramètres sont utiles dans la classe

EDD (03/25) : créer une nouvelle classe ClImage_Html avec 4 membres
ClImage_Html est une Classe
m_bRetour is booléen
m_sChamp_Html is string
m_sChemin is string
m_sImage is string
FIN

EDD (03/25) : créer trois méthodes dans la classe ClImage_Html
PROCÉDURE Validation()
:m_bRetour = True
IF NoSpace(:m_sChemin) = "" THEN
:m_bRetour = False
Info("Merci de remplir le chemin de l'image")
ELSE IF fRépertoireExiste(:m_sChemin) = False THEN
:m_bRetour = False
Info("Merci de vérifier le chemin de l'image")
ELSE IF NoSpace(:m_sImage) = "" THEN
:m_bRetour = False
Info("Merci de remplir le nom de l'image")
ELSE IF ChaîneOccurrence(:m_sImage, ".") = 0 THEN
:m_bRetour = False
Info("Merci de vérifier l'extension de l'image")
ELSE IF fFichierExiste(:m_sChemin + "/" + :m_sImage) = False THEN
:m_bRetour = False
Info("Merci de vérifier le répertoire de l'image")
ELSE IF NoSpace(:m_sChamp_Html) = "" THEN
:m_bRetour = False
Info("Merci de remplir le champ HTML")
END

PROCÉDURE Lancement()
{:m_sChamp_Html, indChamp}..Valeur = :m_sChemin + "/" + :m_sImage

PROCÉDURE Afficher_Image(LOCAL psChamp_Html is string, LOCAL psChemin is string, LOCAL psImage is string)
:m_sChamp_Html = psChamp_Html
:m_sChemin = psChemin
:m_sImage = psImage
:Validation()
IF :m_bRetour = True THEN
:Lancement()
END





Cordialement
Mr.RATSIMANDRESY
Niry Aina Eddy
Membre enregistré
8 messages
Posté le 26 mars 2025 - 17:14
Merci pour voter réponse mais ce n'est pas ce que je demande.
Je veux juste qu'un email affiche correctement les images contenues dans le corps de son message.
En sachant que mon code fonctionnait bien pour un champ de saisie de type HTML mais ne fonctionne plus avec un vrai champ HTML.

Bien à vous
Greg
Membre enregistré
3 578 messages
Membre enregistré
8 messages
Posté le 27 mars 2025 - 13:42
Popoy a écrit :
> https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev.old/29803-image-dans-corps-mail/read.awp

Bonjour Popoy,

Merci déjà pour votre aide.

Si j'ai bien compris ce post couvre une solution pour insérer une image dans le corps d'un email afin de l'envoyer. Ce n'est pas ce que j'ai expliqué en détail plus haut.

Le problème que j'ai : Mon code pour remplacer le CID (par un chemin relatif de l'image) à la réception d'un mail ne fonctionne plus lorsque je charge le HTML dans un champ HTML.

sCID = SansEspace("cid:"+ Attachement.Identifiant)
Mess.HTML = Remplace(Mess.HTML, sCID, sCheminPJ + Attachement..Nom, MotComplet + SansCasse)

Alors qu'avec l'ancien champ de saisie classique dont le type était mis à "HTML" ce code fonctionnait très bien et les images étaient correctement affichées.

En résumé, le champ HTML ne veut plus afficher l'image avec ce code HTML : <img border="0" width="102" height="80" style="width:1.0583in;height:.8333in" id="Image_x0020_118" src="X:\images\image001.png">

Maintenant, je suis peut-être passé à côté de quelque chose d'autre que vous vouliez me montrer avec ce post ou que je n'aurais pas compris.

Cordialement
Greg
Message modifié, 27 mars 2025 - 13:54
Membre enregistré
3 578 messages
Posté le 27 mars 2025 - 14:03
Salut
C'est vrai qu'à priori c'est pas pareil
Sauf que les 2 sont en réalité en HTML
En gros il faut surement mettre en base 64 l'image a l'intérieur du HTML
Ou trouver comment "attacher" l'image comme le fait Thierry Tellier
En plus, tu parles bien d'un mail
Quand tu affiche le mail dans un champ HTML et que celui-ci contient une image
Et une URL
Tu dis que depuis soit l'URL ne fonctionne plus soit l'image ne s'affiche plus
Or comment récupérer l'image contenu dans ce mail
Il est soit attaché soit incorporer
Donc à toi de vérifier l'un ou l'autre et d'agir en conséquence
Message modifié, 27 mars 2025 - 14:04