EditorGadget et format RTF

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
kiriasse
Messages : 16
Inscription : mar. 26/avr./2005 15:53
Localisation : Hérault
Contact :

EditorGadget et format RTF

Message par kiriasse »

Bonjour,

Comment utiliser le format RTF dans un EditorGadget ?
Est-ce possible :?:
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

C'est tout à fait possible :
http://www.purearea.net/pb/CodeArchiv/G ... ludeRTF.pb

Code tiré d'un rassemblement d'exemples à ne pas oublier ;) : http://www.purearea.net/pb/english/index.htm
kiriasse
Messages : 16
Inscription : mar. 26/avr./2005 15:53
Localisation : Hérault
Contact :

Message par kiriasse »

Merci mille fois.
Résultat extraordinaire.
kiriasse
Messages : 16
Inscription : mar. 26/avr./2005 15:53
Localisation : Hérault
Contact :

RTF, EditorGadget et ascenseurs (scrollbars)

Message par kiriasse »

Le résultat obtenu avec le code donné à l'adresse
http://www.purearea.net/pb/CodeArchiv/G ... ludeRTF.pb
est très bien mais il faut utiliser le scrollbar horizontal pour lire le texte RTF (s'il contient des phrases assez longues). :(
Comment peut-on désactiver ce scrollbar horizontal (mais conserver le vertical) et provoquer un retour à la ligne en limite de l'EditorGadget ?

Merci d'avance.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Salut,

Voici un editorgadget avec retour à la ligne automatique
mais avec usage d'API (la pomme)
donc non fonctionnel avec la demo de PB

Code : Tout sélectionner

EditorGadget(#editeur, 0, 70, 500, 300,#PB_Container_Raised)
   SendMessage_(GadgetID(#editeur), #EM_SETTARGETDEVICE, #Null, 0)
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
kiriasse
Messages : 16
Inscription : mar. 26/avr./2005 15:53
Localisation : Hérault
Contact :

Message par kiriasse »

Merci. C'est parfait ainsi.
Et j'ai la version complète et ne regrette pas cette dépense.
Merci à tous ceux qui me répondent. J'en suis tout baba et vais de ce pas arroser ça avec quelques gouttes de rhum à votre santé :lol:
kiriasse
Messages : 16
Inscription : mar. 26/avr./2005 15:53
Localisation : Hérault
Contact :

Message par kiriasse »

Bonjour,

Mon premier petit programme avec PureBasic. Il permet d'afficher du texte au format RTF dans un EditorGadget sans utiliser de fichier.
Toute critique sera la bienvenue.

Code : Tout sélectionner

; === Déclaration des constantes 
; --- Window 
#FllPrin = 0 

; --- Gadget 
#Gadget_Editeur = 0 

; === Déclaration des variables globales, des structures, des listes, tableaux...
Global sEnTeteRTF.s
Global sInfoRTF.s
Global NL.s

; --- sEnTeteRTF
NL = Chr(13) + Chr(10)
sEnTeteRTF = "{\rtf1 \ansi \deftab1134 \deff0 \fs18" + NL 
sEnTeteRTF = sEnTeteRTF + "{\fonttbl" + NL
sEnTeteRTF = sEnTeteRTF + "{\f0 \fswiss Arial;}" + NL
sEnTeteRTF = sEnTeteRTF + "{\f1 \froman Times New Roman;}" + NL
sEnTeteRTF = sEnTeteRTF + "}" + NL
sEnTeteRTF = sEnTeteRTF + "{\colortbl" + NL 
sEnTeteRTF = sEnTeteRTF + ";" + NL 
sEnTeteRTF = sEnTeteRTF + "\red0\green0\blue0;" + NL 
sEnTeteRTF = sEnTeteRTF + "\red255\green0\blue0;" + NL 
sEnTeteRTF = sEnTeteRTF + "}" + NL

; --- sInfoRTF
sInfoRTF = sEnTeteRTF + NL + "{" + NL
sInfoRTF = sInfoRTF + "\plain \cf2 \fs30 \qc \li0 \b TEXTE AU FORMAT RTF" + NL 
sInfoRTF = sInfoRTF + "\par" + NL 
sInfoRTF = sInfoRTF + "\par"+ NL 
sInfoRTF = sInfoRTF + "\plain \f0 \fs20 \cf0 \ql \li100 \ri0 • Ceci est une petite démo qui consiste à afficher du texte au format RTF dans un EditorGadget de PureBasic." + NL
sInfoRTF = sInfoRTF + "\par" + NL 
sInfoRTF = sInfoRTF + "\par" + NL 
sInfoRTF = sInfoRTF + "\plain \f0 \fs20 \cf0 \ql \li100 \ri100 \b • Caractères gras" + NL 
sInfoRTF = sInfoRTF + "\par" + NL 
sInfoRTF = sInfoRTF + "\par" + NL 
sInfoRTF = sInfoRTF + "\plain \f0 \fs20 \cf0 \ql \li100 \ri100 \i • Caractères en italique" + NL 
sInfoRTF = sInfoRTF + "\par" + NL 
sInfoRTF = sInfoRTF + "\par" + NL 
sInfoRTF = sInfoRTF + "}}" + NL

; === Déclaration des procédures 
Procedure Affiche_FllPrin() 
    If OpenWindow(#FllPrin, 0, 0, 620, 450, #PB_Window_SystemMenu|#PB_Window_ScreenCentered,"RTF et EditorGadget")=0
        End
    EndIf 
    If CreateGadgetList(WindowID())=0
        End
    EndIf 
    EditorGadget(#Gadget_Editeur, 20, 20, 580, 410, #PB_Container_Raised) 
    SendMessage_(GadgetID(#Gadget_Editeur), #EM_SETTARGETDEVICE, #Null, 0)
    AddGadgetItem(#Gadget_Editeur, 0, sInfoRTF)
EndProcedure 

; === Début du programme
Affiche_FllPrin()

; === Sortie du programme
Repeat
    Event = WaitWindowEvent() 
Until Event = #PB_EventCloseWindow

End
Cordialement.
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Merci pour l'exemple :D
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Au final, d'aprés la DOC que tu m'as fournit il devrait etre possible de créer des tableaux dans un editorGadget !

A kan PureWord ?
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Ou serait il possible d'avoir une doc sympa (genre site perso) sur le RTF ? car la doc de Windows, c'est pas trés digeste !
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Code : Tout sélectionner

sEnTeteRTF = "{\rtf1 \ansi \deftab1134 \deff0 \fs18" + NL
Dans l'entete du RTF, à quoi correspond \deftab1134 ?

Code commenté au niveau du rtf !

Code : Tout sélectionner

; === Déclaration des constantes
; --- Window
#FllPrin = 0

; --- Gadget
#Gadget_Editeur = 0

; === Déclaration des variables globales, des structures, des listes, tableaux...
Global sEnTeteRTF.s
Global sInfoRTF.s
Global NL.s

; --- sEnTeteRTF
NL = Chr(13) + Chr(10)
sEnTeteRTF = "{\rtf1 \ansi \deftab1134 \deff0 \fs20" + NL
; \rtf1 : version de rtf
; \ansi : set de caractères
; \deftab1134 :
; \deff0 : Font par défaut (ici la 0 soit \fswissArial) déclarée dans la table des fonts !
; \fs18 : taille par défaut de la police
sEnTeteRTF = sEnTeteRTF + "{\fonttbl" + NL
sEnTeteRTF = sEnTeteRTF + "{\f0 \fswiss Arial;}" + NL
sEnTeteRTF = sEnTeteRTF + "{\f1 \froman Times New Roman;}" + NL
sEnTeteRTF = sEnTeteRTF + "}" + NL
sEnTeteRTF = sEnTeteRTF + "{\colortbl" + NL
sEnTeteRTF = sEnTeteRTF + ";" + NL
sEnTeteRTF = sEnTeteRTF + "\red0\green0\blue0;" + NL
sEnTeteRTF = sEnTeteRTF + "\red255\green0\blue0;" + NL
sEnTeteRTF = sEnTeteRTF + "\red0\green255\blue0;" + NL
sEnTeteRTF = sEnTeteRTF + "}" + NL

; --- sInfoRTF
sInfoRTF = sEnTeteRTF + NL + "{" + NL
sInfoRTF = sInfoRTF + "\plain \cf2  \ql \li100 \b TEXTE AU FORMAT RTF" + NL
sInfoRTF = sInfoRTF + "\par" + NL
;\plain :réinitialise la police cad taille, font utilisée, gras, italiq, alignement
; cfN : couleur du texte suivant par rapport à table des couleurs ci dessus
;\fs taille du texte
;\q c :centré r : à droite l : à gauche
;\li0 : marge à gauche
;\b gras
;\par : nouveau paragraphe
sInfoRTF = sInfoRTF + "}}" + NL

; === Déclaration des procédures
Procedure Affiche_FllPrin()
    If OpenWindow(#FllPrin, 0, 0, 620, 450, #PB_Window_SystemMenu|#PB_Window_ScreenCentered,"RTF et EditorGadget")=0
        End
    EndIf
    If CreateGadgetList(WindowID())=0
        End
    EndIf
    EditorGadget(#Gadget_Editeur, 20, 20, 580, 410)
    SendMessage_(GadgetID(#Gadget_Editeur), #EM_SETTARGETDEVICE, #Null, 0)
    AddGadgetItem(#Gadget_Editeur, 0, sInfoRTF)
EndProcedure

; === Début du programme
Affiche_FllPrin()

; === Sortie du programme
Repeat
    Event = WaitWindowEvent()
Until Event = #PB_EventCloseWindow

End
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

Voici une petite procédure pour faire des tableaux en RTF :D

Code : Tout sélectionner

Procedure.s TableauRTF(nbcol,nbligne,largeur)
          result.s = "{\rtf1\trowd"
          For i=1 To nbcol
                    result + "\cellx"+Str(i*largeur)
          Next
          For j=1 To nbligne
                    result + "\intbl"
                    For i=1 To nbcol
                              result + "\cell"
                    Next
                              result + "\row"
          Next
          result + "}"
          ProcedureReturn result
EndProcedure
hWnd = OpenWindow(0,0,0,800,600,#PB_Window_SystemMenu | #PB_Window_ScreenCentered,"Tableau")
CreateGadgetList(hWnd) 
EditorGadget(1,10,10,780,580)
SetGadgetText(1,TableauRTF(30,20,200))

Repeat
          EventID = WaitWindowEvent() 
          Select EventID
                    Case #PB_Event_CloseWindow
                              Quit = #True
          EndSelect
Until Quit
kiriasse
Messages : 16
Inscription : mar. 26/avr./2005 15:53
Localisation : Hérault
Contact :

Message par kiriasse »

Bonjour.
Le code RTF que j'ai donné et celui qui a été donné ultérieurement fonctionnent bien sous Windows XP mais pas sous Windows 98 par exemple. C'est dommage.
Pour savoir si le code RTF est digéré par l'ordinateur cible, on peut faire un test avec un petit texte au format RTF qui, normalement, devrait afficher par exemple le mot « TEST » en caractères gras. Si les 4 premiers caractères lus dans l'éditeur sont les 4 caractères « TEST », c'est que l'ordinateur digère le format RTF. Sinon, il donne les 4 premiers caractères du code RTF et il faut alors afficher dans EditorGadget un texte au format texte brut.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

C'est vrai que l'utilisation du RTF est des plus intéressantes, mais ce qui serait particulièrement pratique c'est la possibilité de modifier le contenu de l'éditeur par l'action sur des boutons.
Une case #caractère gras, une case #couleur, une case #police, etc...

Très sympa la grille, notamment pour ceux qui ont une mauvaise vue, cela permet de positionner avec exactitude les entêtes de phrases. Là aussi il faudrait la mettre en option pour la retirer après écriture du texte.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
kiriasse
Messages : 16
Inscription : mar. 26/avr./2005 15:53
Localisation : Hérault
Contact :

EditorGadget et code RTF

Message par kiriasse »

Je faisais un constat : mon code sous Windows 9x ne restitue pas dans EditorGadget le format RTF alors qu'il le restitue correctement sous Windows XP.
N'y a-t-il pas de solution pour que ça marche aussi sous Windows 9x ?
Répondre