Page 1 sur 2

EditorGadget et format RTF

Publié : mer. 27/avr./2005 15:01
par kiriasse
Bonjour,

Comment utiliser le format RTF dans un EditorGadget ?
Est-ce possible :?:

Publié : mer. 27/avr./2005 17:24
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

Publié : mer. 27/avr./2005 17:54
par kiriasse
Merci mille fois.
Résultat extraordinaire.

RTF, EditorGadget et ascenseurs (scrollbars)

Publié : mer. 27/avr./2005 18:47
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.

Publié : mer. 27/avr./2005 19:25
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)

Publié : mer. 27/avr./2005 19:55
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:

Publié : jeu. 28/avr./2005 14:51
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.

Publié : jeu. 28/avr./2005 15:22
par Oliv
Merci pour l'exemple :D

Publié : sam. 30/avr./2005 15:07
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 ?

Publié : lun. 02/mai/2005 21:33
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 !

Publié : dim. 08/mai/2005 14:39
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

Publié : dim. 08/mai/2005 16:42
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

Publié : dim. 08/mai/2005 17:19
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.

Publié : lun. 09/mai/2005 8:47
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.

EditorGadget et code RTF

Publié : lun. 09/mai/2005 9:16
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 ?