PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → puce sur champ RTF utilisable dans un état windev
puce sur champ RTF utilisable dans un état windev
Iniciado por Julien V, 27,abr. 2020 17:10 - No hay respuesta
Miembro registrado
134 mensajes
Publicado el 27,abril 2020 - 17:10
Bonjour,

J'ai pas mal galéré pour permettre l'ajout d'une puce dans un champ de saisie RTF qui puisse être repris dans un champ RTF d'un état Windev, du coup je partage ma solution :

L'idée est d'ajouter en masse des puces sur les lignes sélectionnées complètement (ou non) dans un champ RTF.
A priori, le caractère puce U+2022 n'est pas reconnu dans les états Windev, je me suis rabattu sur le point médian U+00B7 que je mets en gras.

Soit
- SAI_saisie un champ de saisie RTF
- BTN_puce le bouton permettant d'ajouter les puces avec le code suivant au clic :
i, curseur, finCurseur est un entier
puce, retourChariot, contenu est une chaîne
ajoutPuce est un booléen

puce = " · " // Puce modélisée par un point médian qui sera mis en gras
retourChariot = "¶" // Retour chariot modélisé par un pied de mouche pour éviter les calculs pourris sur les positions de RC

// Récupération du contenu du champ RTF sans les balises
contenu = Remplace( RTFVersTexte( SAI_saisie ), RC, retourChariot )

// On récupère la position des curseurs
curseur = SAI_saisie..Curseur
finCurseur = SAI_saisie..FinCurseur

// On se positionne sur le 1er caractère de la ligne en fonction du curseur
TANTQUE curseur > 1

SI contenu[ curseur - 1 ] = retourChariot ALORS
SORTIR
FIN // SI contenu[ curseur - 1 ] = retourChariot ALORS
curseur --
FIN // TANTQUE curseur > 1

ajoutPuce = Vrai
POUR i = curseur À finCurseur

SI ajoutPuce = Faux ALORS
SI contenu[ i ] = retourChariot ALORS
ajoutPuce = Vrai
FIN // SI contenu[ i ] = retourChariot ALORS
SINON
// Insertion de la puce
RTFInsère( SAI_saisie, puce, i )
// Sélection de la puce
SAI_saisie..Curseur = i
SAI_saisie..FinCurseur = i + Taille( puce )
// Formatage de la puce
RTFSélection( SAI_saisie, rtfGras, Vrai )
RTFSélection( SAI_saisie, rtfSouligné, Faux )
RTFSélection( SAI_saisie, rtfItalique, Faux )
// On réajuste les variables en prenant en compte l'insertion
contenu = Remplace( RTFVersTexte( SAI_saisie ), RC, retourChariot )
curseur += Taille( puce )
finCurseur += Taille( puce )
ajoutPuce = Faux
FIN // SI ajoutPuce = Faux ALORS

FIN // POUR i = curseur a finCurseur


Résultat avec aperçu derrière d'un état :





Voili voulou