PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Document dans un état
Document dans un état
Débuté par Philippe Lienart, 16 jan. 2025 17:27 - 3 réponses
Posté le 16 janvier 2025 - 17:27
Dans un état on peut reprendre plusieurs types de champs (libelle, RTFn ..).
Mais est-il possible de reprendre un document généré via le traitement de texte de Windev.
Le but étant d'imprimer également d'autres données en plus du document.
Cela ne pose actuellement aucun problème si on utilise des champs RTF.
La transformation d'un document en RTF serait une solution. Mais peut-on transformer (ou sauver) un document traitement de texte en RTF ?
Posté le 17 janvier 2025 - 08:27
Philippe Lienart a écrit :
Dans un état on peut reprendre plusieurs types de champs (libelle, RTFn ..).
Mais est-il possible de reprendre un document généré via le traitement de texte de Windev.
Le but étant d'imprimer également d'autres données en plus du document.
Cela ne pose actuellement aucun problème si on utilise des champs RTF.
La transformation d'un document en RTF serait une solution. Mais peut-on transformer (ou sauver) un document traitement de texte en RTF ?
Posté le 17 janvier 2025 - 08:28
Philippe Lienart a écrit :
Dans un état on peut reprendre plusieurs types de champs (libelle, RTFn ..).
Mais est-il possible de reprendre un document généré via le traitement de texte de Windev.
Le but étant d'imprimer également d'autres données en plus du document.
Cela ne pose actuellement aucun problème si on utilise des champs RTF.
La transformation d'un document en RTF serait une solution. Mais peut-on transformer (ou sauver) un document traitement de texte en RTF ?


Bonjour

Je vois votre problème, vous souhaitez sauvegarder un document de type RTF, j'ai deux solution pour vous, à vous de choisir

1. Soit vous devrez enregistrer le texte dans un fichier HFSQL
2. Soit vous devrez enregistrer le texte dans un fichier de format .RTF

Pour le cas 1, vous devrez créer un fichier HFSQL avec le titre FIC_Devis, c'est pour un exemple de piste
Pour le cas 2, après avoir sauvegarder le texte dans une base HFSQL, vous devrez sauvegarder en format RTF après

Voilà un code dont vous pouvez utiliser
// EDD (01/25) : créer un nouveau champ RTF et un nouveau champ bouton pour lancer le sauvegarde
// EDD (01/25) : copier ce code dans le nouveau bouton
LOCAL
cRtf is ClRtf
cRtf:m_sChamp = "SSI_Texte"
cRtf:m_sRépertoire = fRepExe() + "\RTF"
cRtf:m_sTexte = SSI_Texte
cRtf:m_sTitre = "Devis_" + DateSys()
cRtf:Validation()
IF cRtf:m_bRetour = True THEN
cRtf:Sauvegarder_Texte()
cRtf:Sauvegarder_Fichier()
Info("L'enregistrement de texte en RTF est réussie.")
END

// EDD (01/25) : créer un nouveau répetoire dans exe ...\Database
// EDD (01/25) : créer un nouveau répetoire dans exe ...\RTF
// EDD (01/25) : créer un nouveau fichier HFSQL FIC_Devis.fic avec le rubrique suivant et mettre dans le répertoire ...\Database\FIC_Devis.fic
Identifiant Id.Auto
Texte chaine(1000)
Date_Enregistre DateHeure

// EDD (01/25) : créer une nouvelle classe ClConnexion_Rtf
ClConnexion_Rtf est une Classe
FIN

// EDD (01/25) : créer deux nouvelles méthode dans la classe ClConnexion_Rtf
PROCÉDURE Annulation()
LOCAL
cRub is ClRubrique_Devis
IF HAnnuleDéclaration(cRub:Fichier()) = False THEN
Info(ErreurInfo(errComplet))
EndProgram()
END

PROCÉDURE Déclaration()
LOCAL
cRub is ClRubrique_Devis
IF HDéclareExterne(fRepExe() + "\Database\" + cRub:Fichier() + ".fic", cRub:Fichier()) = False THEN
Info(ErreurInfo(errComplet))
EndProgram()
END

// EDD (01/25) : créer une nouvelle classe ClRtf
ClRtf est une Classe
m_bRetour is booléen
m_sChamp is string
m_sTitre is string
m_sRépertoire is string
m_sTexte is string
FIN

// EDD (01/25) : créer trois nouvelle méthode dans la classe ClRtf
PROCÉDURE Sauvegarder_Fichier()
LOCAL
bfBuffeur is Buffer
cConnexion is ClConnexion_Rtf
cRub is ClRubrique_Devis
eEntier is entier
cConnexion:Déclaration()
eEntier = HNbEnr(cRub:Fichier())
HLitRecherche(cRub:Fichier(), cRub:Rub_Identifiant(), eEntier)
IF HTrouve(cRub:Fichier()) = True THEN
{:m_sChamp, indChamp} = {cRub:Fichier() + "." + cRub:Rub_Texte(), indRubrique}
END
cConnexion:Annulation()
bfBuffeur = {:m_sChamp, indChamp}
IF fSauveBuffer(:m_sRépertoire + "\" + :m_sTitre + ".rtf", bfBuffeur) = False THEN
Info(ErreurInfo(errComplet))
EndProgram()
ELSE
Info("Le fichier RTF se trouve dans " + :m_sRépertoire + "\" + :m_sTitre + ".rtf")
END

PROCÉDURE Sauvegarder_Texte()
LOCAL
cRub is ClRubrique_Devis
cConnexion is ClConnexion_Rtf
cConnexion:Déclaration()
HRAZ(cRub:Fichier())
{cRub:Fichier() + "." + cRub:Rub_Texte(), indRubrique} = {:m_sChamp, indChamp}..Valeur
{cRub:Fichier() + "." + cRub:Rub_Date_Enregistre(), indRubrique} = DateHeureSys()
IF HAjoute(cRub:Fichier()) = False THEN
Info(ErreurInfo(errComplet))
EndProgram()
END
cConnexion:Annulation()

PROCÉDURE Validation()
:m_bRetour = True
IF fRépertoireExiste(:m_sRépertoire) = False THEN
:m_bRetour = False
Info("Merci de vérifier le répertoire RTF destination.")
ELSE IF NoSpace(:m_sTitre) = "" THEN
:m_bRetour = False
Info("Merci de remplir le titre du RTF.")
ELSE IF ChampExiste(:m_sChamp) = False THEN
:m_bRetour = False
Info("Merci de vérifier le champ RTF inexistante.")
END

// EDD (01/25) : créer une nouvelle classe ClRubrique_Devis
ClRubrique_Devis est une Classe
FIN

// EDD (01/25) : créer trois nouvelle méthode dans la classe ClRubrique_Devis
PROCÉDURE Rub_Date_Enregistre()
RENVOYER "Date_Enregistre"

PROCÉDURE Rub_Identifiant()
RENVOYER "Identifiant"

PROCÉDURE Rub_Texte()
RENVOYER "Texte"

NB : Pour ce modèle, vous avez le document RTF et ainsi le texte en RTF dans une base de données HFSQL

Cordialement
Mr.RATSIMANDRESY
Niry Aina Eddy
Membre enregistré
751 messages
Posté le 17 janvier 2025 - 09:37
Bonjour
Je n'ai jamais utilisé, mais iEnchaînementAjoute mentionne les documents de type Traitement de texte.
Voir Remarque au début de cette page :

https://doc.pcsoft.fr/fr-FR/?9000128

Cdlt