Ecrire différents types de textes dans un gadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

Ecrire différents types de textes dans un gadget

Message 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...)
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

Message par Octavius »

Ma question est peut-être pas très claire...

Personne ne peut m'aider ?
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Fais une recherche sur Richedit
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

Message 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.
Anonyme

Message par Anonyme »

Richedit ? Qu'est-ce c'est ?
Comme son nom l'indique , Richedit [ edition riche :D ] 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.
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

Message 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 ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

..........
Dernière modification par Backup le mar. 19/août/2014 13:24, modifié 1 fois.
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

Message 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 ?
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

Message 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 ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

.......
Dernière modification par Backup le mar. 19/août/2014 13:25, modifié 1 fois.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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

:wink:
Dernière modification par Flype le mar. 07/août/2007 23:40, modifié 2 fois.
Image
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
Octavius
Messages : 312
Inscription : jeu. 26/juil./2007 12:10

Message 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 :

Code : Tout sélectionner

SetGadgetText(#mon_editeur,"{\rtf1\ansi "+text$+"}")
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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

...
Dernière modification par Backup le mar. 19/août/2014 13:25, modifié 3 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

........
Dernière modification par Backup le mar. 19/août/2014 13:25, modifié 1 fois.
Répondre