Page 1 sur 2
Ecrire différents types de textes dans un gadget
Publié : mar. 07/août/2007 1:10
par Octavius
Je sais comment on fait pour utiliser une police d'écriture différente et la charger pour que le texte d'un Gadget soit entièrement normal, gras ou italique.
Mais je ne trouve pas le moyen de faire en sorte que l'on puisse mélanger différents types de textes dans un même gadget.
Par exemple, si je veux faire un bloc-note qui prend en charge différentes polices d'écriture, le gras et l'italique : je voudrais que seul le texte sélectionné dans mon gadget (l'EditorGadget en l'occurence) soit changé en gras si je clique sur le bouton gras, et pas l'ensemble du texte de l'éditeur... Un peu comme sous ms word.
Comment faire ?
Ah et question subsidiaire : comme enregistrer un fichier de sauvegarde du texte qui prenne en compte la police et le gras ? (le format .txt ne prend pas en compte cela...)
Publié : mar. 07/août/2007 20:19
par Octavius
Ma question est peut-être pas très claire...
Personne ne peut m'aider ?
Publié : mar. 07/août/2007 20:28
par Droopy
Fais une recherche sur Richedit
Publié : mar. 07/août/2007 20:57
par Octavius
Richedit ? Qu'est-ce c'est ?
Je viens de faire la recherche, mais je ne sais pas trop ce que je cherche, alors je ne trouve pas grand chose... J'ai vu quelques sujets où il apparaît mais ils ne répondent pas à mon problème.
Publié : mar. 07/août/2007 21:43
par Anonyme
Richedit ? Qu'est-ce c'est ?
Comme son nom l'indique , Richedit [ edition riche

] te permet justement cela.
c'est ni plus ni moins qu'une lib.
pour le format, soit tu regarde comment les formats actuel sont fait ( html , doc , etc... ) ou tu fait ton propre format.
Publié : mar. 07/août/2007 21:51
par Octavius
une lib ? C'est comme une dll ou un truc dans le genre ?
Est-ce que t'aurais un lien pour installer cette lib ?
Publié : mar. 07/août/2007 22:25
par Backup
..........
Publié : mar. 07/août/2007 22:58
par Octavius
Alors voyons voir tout ça...
Le format RTF ? Hum, je connais pas ce format mais si je trouve le code des balises je suppose que je peux vite apprendre à m'en servir, je garde ça dans un coin de ma tête.
Scintilla ? Dans l'aide de purebasic ils n'en parlent pas, sauf pour dire qu'on a bien la licence. Je garde aussi cette idée.
J'essaie de comprendre le code que tu m'as fournis. Il m'intéresse particulièrement : si j'ai bien compris, pas besoin de rajouter de nouvelles libs. Alors la fenêtre et la boucle principale tout ça je comprends, mais je rame un peu à comprendre ta procédure...
D'où vient CHARFORMAT ? Ce n'est pas une structure qui a été déclarée dans le programme, à quoi ça sert ?
A quoi servent les différents éléments de format.CHARFORMAT ?
SendMessage_() ? J'avais déjà vu ce truc dans un tuto pour m'apprendre à faire des fenêtres popup avec les fonctions copier-coller, apparemment c'est cette fonction qui transforme le texte en gras/italique/etc. , j'ai bon ? #SCF_SELECTION permet de changer le format de la partie sélectionnée c'est ça ?
Publié : mar. 07/août/2007 23:27
par Octavius
J'ai recherché des infos sur le format rtf sur internet. Le fichier doit commencer par '{', finir par '}', et les balises pour le gras sont \b et \b0.
J'ai donc créer une chaîne de character :
string$="{ texte normal et \b texte en gras\b0}"
Mais quand je la mets dans l'EditorGadget il ne m'affiche pas le format, il affiche ma chaîne brute. Comment dois-je faire pour que le format rtf soit pris en compte dans mon EditorGadget ?
Publié : mar. 07/août/2007 23:30
par Backup
.......
Publié : mar. 07/août/2007 23:30
par Flype
le plus simple est de prendre ton bon vieux WordPad.
le RTF est son format par défaut.
par exemple, enregistre ce texte en tant que 'readme.rtf' et ouvre le avec WordPad :
Code : Tout sélectionner
{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Tahoma;}{\f1\fswiss\fcharset0 Arial;}}
{\colortbl ;\red0\green0\blue255;\red255\green0\blue0;\red128\green128\blue128;}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\qc\cf1\ul\b\f0\fs52 PureBasic Language\par
\cf0\ulnone\b0 Version 4.10 \par
\cf2\fs32 Beta 2\par
\cf3 For Windows, Linux, MacOS\cf2\f1\fs20\par
}
ou bien directement dans l'EditorGadget :
Code : Tout sélectionner
Define rtf.s
rtf = "{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Tahoma;}"
rtf + "{\f1\fswiss\fcharset0 Arial;}}"
rtf + "{\colortbl ;\red0\green0\blue255;\red255\green0\blue0;\red128\green128\blue128;}"
rtf + "{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\qc\cf1\ul\b\f0\fs52 PureBasic Language\par"
rtf + "\cf0\ulnone\b0 Version 4.10 \par"
rtf + "\cf2\fs32 Beta 2\par"
rtf + "\cf3 For Windows, Linux, MacOS\cf2\f1\fs20\par}"
OpenWindow(0, 0, 0, 540, 200, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
EditorGadget(0, 10, 10, 520, 180)
SetGadgetText(0, rtf)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
quant à de la doc sur le RTF, tu as la doc officielle sur MSDN :
http://msdn2.microsoft.com/en-us/librar ... e.10).aspx
sans oublier le bon vieux wikipedia (en francais) :
http://fr.wikipedia.org/wiki/Rich_Text_Format
http://www.snake.net/software/RTF/RTF-Spec-1.7.pdf

Publié : mar. 07/août/2007 23:33
par Backup
Octavius a écrit : Comment dois-je faire pour que le format rtf soit pris en compte dans mon EditorGadget ?
comme je te l'ai dit plus haut , une petite recherche te donnerai ce lien par exemple
http://www.purebasic.fr/french/viewtopi ... hlight=rtf
Publié : mer. 08/août/2007 0:15
par Octavius
Ca y est j'ai compris !!!!!!!!!!!!!!!!!!!
En fait c'est tout simple, après la création de l'éditeur il faut avoir ce message :
Code : Tout sélectionner
SendMessage_(GadgetID(#mon_editeur),#EM_SETTARGETDEVICE,#Null,0)
Ca permet d'afficher la mise en forme.
Et pour afficher le texte text$ mis en forme il suffira par exemple d'utiliser cette commande :
Les chaînes de caractères avant et après le text$ permettent de créer un environnement interprétable comme du RTF. A l'intérieure de notre chaîne de caractères text$ se trouveront les balises /b /b0 pour le gras, /i /i0 pour l'italique, etc.
C'est pas facile du tout pour un débutant de trouver ces informations, pourtant j'ai abondemment utilisé la fonction Recherche, aussi bien ici que sur Google, le problème essentiel étant qu'un débutant ne comprends pas la moitié des commandes utilisées dans un exemple de code produit par un expert (des pointeurs, des structures, des macros, des commandes de lib partout... alors que ça fait pas longtemps que j'ai quitté le monde idyllique des additions de variables...) il m'était donc difficile d'en tirer qqch de pertinent.
Publié : mer. 08/août/2007 5:57
par Backup
...
Publié : mer. 08/août/2007 6:44
par Backup
........