IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre actif
    Inscrit en
    août 2005
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : août 2005
    Messages : 96
    Points : 200
    Points
    200
    Par défaut Windev : RTF : Concaténer des chaines RTF de polices différentes dans un libellé avec mise en forme RTF
    Voici un code permettant de concaténer des chaines RTF de polices différentes, pour les afficher dans un champ de type "Libellé avec mise en forme RTF" (Champ Libellé Onglet détail, cocher "Texte avec mise en forme (R.T.F)"), sans passer par un champ de saisie RTF.

    Dans cet exemple, la chaine finale obtenue est la suivante : "Verdana10RougeArial8VertTahoma12BleuGras Trebuchet10NoirSouligne" (Chaque partie étant mise en forme avec la police représentée) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    //Champ de Type "Libellé avec mise en forme RTF"
    Lib_RTF = ""
     
    LOCAL
    	sTexteRTF est une chaîne
     
    sTexteRTF = Texte_Vers_RTF(sTexteRTF)
     
    sTexteRTF = RTF_Concat_Texte(sTexteRTF,"Verdana10Rouge","Verdana",10,iRougeFoncé)
    sTexteRTF = RTF_Concat_Texte(sTexteRTF,"Arial8Vert","Arial",8,iVertFoncé)
    sTexteRTF = RTF_Concat_Texte(sTexteRTF,"Tahoma12BleuGras","Tahoma",12,iBleuFoncé,Vrai)
    sTexteRTF = RTF_Concat_Texte(sTexteRTF,"          ")
    sTexteRTF = RTF_Concat_Texte(sTexteRTF,"Trebuchet10NoirSouligne","Trebuchet",10,iNoir,Faux,Vrai)
     
    Lib_RTF = sTexteRTF
    Procédure RTF_Concat_Texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    PROCEDURE RTF_Concat_Texte(...
    LOCAL _sTexteRTF1 est une chaîne,...
    LOCAL _sTexteRTF2 est une chaîne,...
    _sPolice est une chaîne="",...
    _iTaille est un entier=-1,...
    _iCouleur est un entier=-1,...
    _iGras est un entier=-1,...
    _iSouligne est un entier=-1)
     
    _sTexteRTF2 = Texte_Vers_RTF(_sTexteRTF2)
    _sTexteRTF2 = RTF_Police(_sTexteRTF2,_sPolice,_iTaille,_iCouleur,_iGras,_iSouligne)
    _sTexteRTF2 = RTF_Concat(_sTexteRTF1,_sTexteRTF2)
     
    RENVOYER _sTexteRTF2
    Procédure Texte_Vers_RTF :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    PROCEDURE Texte_Vers_RTF(LOCAL _sTexte est une chaîne)
     
    //En attendant la procédure W-Langage "Texte_Vers_RTF" implémentée à partir de Windev 18
     
    LOCAL
    	sTexteRTF est une chaîne
     
    sTexteRTF = ""
     
    sTexteRTF = RTFAjoute(sTexteRTF,_sTexte)
     
    //La fonction RTFAjoute ajoute 2 RC en fin de chaine
    //Je les supprime
    sTexteRTF = Gauche(sTexteRTF,Taille(sTexteRTF)-5)
    sTexteRTF += "}"
     
    RENVOYER sTexteRTF
    Procédure RTF_Police :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    PROCEDURE RTF_Police(__sTexteRTF est une chaîne,...
    _sPolice est une chaîne="",...
    _iTaille est un entier=-1,...
    _iCouleur est un entier=-1,...
    _iGras est un entier=-1,...
    _iSouligne est un entier=-1)
     
    LOCAL
    	iTaille est un entier
     
    iTaille = Taille(__sTexteRTF)
     
    SI _sPolice <> "" ALORS
    	__sTexteRTF = RTFSélection(__sTexteRTF,rtfNomPolice,_sPolice,1,iTaille)
    FIN
    SI _iTaille <> -1 ALORS
    	__sTexteRTF = RTFSélection(__sTexteRTF,rtfTaillePolice,_iTaille,1,iTaille)
    FIN
    SI _iCouleur <> -1 ALORS
    	__sTexteRTF = RTFSélection(__sTexteRTF,rtfCouleur,_iCouleur,1,iTaille)
    FIN
    SI _iGras <> -1 ALORS
    	__sTexteRTF = RTFSélection(__sTexteRTF,rtfGras,_iGras,1,iTaille)
    FIN
    SI _iSouligne <> -1 ALORS
    	__sTexteRTF = RTFSélection(__sTexteRTF,rtfSouligné,_iSouligne,1,iTaille)
    FIN
     
    RENVOYER __sTexteRTF
    Procédure RTF_Concat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    PROCEDURE RTF_Concat(LOCAL _sTexteRTF1 est une chaîne,LOCAL _sTexteRTF2 est une chaîne)
     
    LOCAL
    	sTexteRTFFinal est une chaîne
     
    sTexteRTFFinal = RTFAjoute(_sTexteRTF1,_sTexteRTF2)
     
    //La fonction RTFAjoute ajoute 2 RC en fin de chaine
    //Je les supprime ainsi que la balise \par
    sTexteRTFFinal = Gauche(sTexteRTFFinal,Taille(sTexteRTFFinal)-9)
    sTexteRTFFinal += "}"
     
    RENVOYER sTexteRTFFinal
    Bonne prog

  2. #2
    Membre habitué Avatar de GCASPIC10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2010
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : mars 2010
    Messages : 241
    Points : 144
    Points
    144
    Par défaut Traitement de TXT vers RTF
    Bonjour,

    Merci pour ce code parfaitement fonctionnel.
    Je suis en version 16 et donc très peu évolué...

    Il est effectivement très difficile de bien maîtriser les attributs RTF et de ce fait, j'ai pu résoudre mon problème avec.

    En fait je devais intégrer dans un champ RTF de ma table une compilation de 3 messages de types différents et provenant d'un fichier.

    La lecture dans le fichier des valeurs à concaténer avec RC et aspect différent :
    Valeur 1 = texte +RC
    Valeur 2 = Texte + RC
    Valeur 3 = RTF

    J'ai juste modifié un extrait de la fonction RTF_Concat_Texte pour ne pas avoir à changer l'aspect de ma valeur 3 (déjà mise en forme)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SI _sPolice <> "" ALORS		
    	_sTexteRTF2 = Texte_Vers_RTF(_sTexteRTF2)
    	_sTexteRTF2 = RTF_Police(_sTexteRTF2,_sPolice,_iTaille,_iCouleur,_iGras,_iSouligne)
    	_sTexteRTF2 = RTF_Concat(_sTexteRTF1,_sTexteRTF2)
    SINON
    	_sTexteRTF2 = RTF_Concat(_sTexteRTF1,_sTexteRTF2)
    FIN
    Encore merci
    La patience est d'or, l'aide est inestimable ...

Discussions similaires

  1. concaténation des chaines
    Par maryem_kh dans le forum Débuter
    Réponses: 4
    Dernier message: 01/02/2013, 10h59
  2. Réponses: 1
    Dernier message: 30/01/2013, 20h15
  3. [A-03] concaténer des chaines de 2 enregistrements
    Par ouzzin dans le forum VBA Access
    Réponses: 6
    Dernier message: 22/12/2008, 13h21
  4. concaténer des chaines sous un shell
    Par illegalsene dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 09/02/2008, 14h18
  5. Réponses: 2
    Dernier message: 12/07/2007, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo