Lorsque l'on rédige un document dans le champ traitement de texte, on souhaite souvent utiliser les guillemets français « et » et non les guillemets techniques "" ou guillemets anglais.

 

C'est une option de Word et vous pouvez créer une option identique pour vos champs traitement de texte de WINDEV en utilisant la procédure suivante :

 

// chTTX (chaîne UNICODE) : Nom du champ Traitement de texte
// nCurseur (entier) : position du dernier caractère saisi

 

 

PROCÉDURE RemplaceGuillemets(chTTX est une chaîne , nCurseur est un entier)

 

f est un docFragment({chTTX,indChamp},nCurseur-1,1)

tabGuillemetsOuvrants est tableau de docFragments

tabGuillemetsFermants est tableau de docFragments

SI Asc(f.Texte) = 34 ALORS

// Recherche de tous les guillemets

tabGuillemetsOuvrants = DocRecherche({chTTX,indChamp},Caract(171))

tabGuillemetsFermants = DocRecherche({chTTX,indChamp}, Caract(187))

// On vérifie le sens du guillemet précédent.

SI tabGuillemetsOuvrants.Occurrence > 0 ALORS

SI tabGuillemetsFermants..Occurrence > 0 ALORS

SI tabGuillemetsOuvrants[tabGuillemetsOuvrants.Occurrence].PositionDébut > tabGuillemetsFermants[tabGuillemetsFermants.Occurrence].PositionDébut ALORS

// Le dernier guillemet est ouvrant, on utilise un guillemet fermant.

f.Texte = Caract(187)

SINON

// Le dernier est fermant, on utilise un guillemet ouvrant.

f.Texte = Caract(171)

FIN

SINON

// Le seul guillemet existant est ouvant, on utilise un guillemet fermant.

f.Texte = Caract(187)

FIN

SINON

// Il n'y a pas encore de guillemets, on utilise un guillemet ouvant.

f.Texte = Caract(171)

FIN

FIN

 

Cette procédure est ensuite à appeler dans le code « A chaque modification du champ ».

// Remplacement des "" par «

RemplaceGuillemets(MoiMême..Nom,MoiMême..Curseur)

 

< Retour

3 commentaires

monster
13/04/2020 - 22:50 - Répondre
cool

Mr Bluch
16/04/2020 - 10:49 - Répondre
Bonjour votre code contient une coquille et ne fonctionne pas correctement, En effet l'instruction f est un docFragment({chTTX,indChamp}, nCurseur-1, nCurseur) est incorrecte car le constructeur du docFragment prend pour 3ème paramètre la longueur du fragment et non pas la position de fin l'instruction correcte est la suivante f est un docFragment({chTTX,indChamp}, nCurseur-1, 1) Bonne journée

Loic HAMEL
16/04/2020 - 11:07 - Répondre
Bonjour, Vous avez entièrement raison. J'ai donc modifié le code de la publication. Merci pour votre contribution.

Publier un commentaire : 
Votre adresse email ne sera pas publiée