[BORLAND c++] utilisation de TRichedit ENCORE des prob[RESOLU NA!!]

utilisation de TRichedit ENCORE des prob[RESOLU NA!!] [BORLAND c++] - C++ - Programmation

Marsh Posté le 12-09-2002 à 10:41:05    

Moute biene ..
 
Dans un Form g deux controle, un TRichEdit et un TMemo.
L'utilisateur tape une serie de trucs dans le TMemo. Cette chaine peut ou pas contenir des caractéres d'echappement du style \red, \bold.
 
A chaque fois que le Memo est modifié, le RichEdit doit afficher le contenu du Memo en enlevant les \??? (facile) et en les remplacant par la mise en forme adéquat.
 
Ex :
 
Memo = Ce texte est \red rouge.
RichEdit = ce texte est rouge.
 
Comment donc specifier a quel endroit du richedit effectuer le changement d'attribut ??
 
merci


Message édité par Joel F le 26-09-2002 à 08:48:40
Reply

Marsh Posté le 12-09-2002 à 10:41:05   

Reply

Marsh Posté le 12-09-2002 à 11:00:24    

T'as la méthode bourrin: tu selectionne le texte voulu et tu change ses attributs (pptés: SelAttributes SelLength SelStart)


---------------
Le Tyran
Reply

Marsh Posté le 12-09-2002 à 11:01:22    

Certes y a pas fin++ ?

Reply

Marsh Posté le 12-09-2002 à 11:02:05    

Joel F a écrit a écrit :

Certes y a pas fin++ ?




 
J'ai pas vu en tout cas


---------------
Le Tyran
Reply

Marsh Posté le 12-09-2002 à 11:04:08    

Donc en clair je parse ma chaine Memo a chque fois que je toruve un \????? je l'enleve, recup la position du curseur, va juska la fin du mot et fait SetAttributes ...
 
1. Recupérer la pos du curseur ??
2. Chercher la fin d'un mot ??
 
Bou ca va etre chiant ...

Reply

Marsh Posté le 12-09-2002 à 11:04:16    

tu peux faire une moulinette pour transformer directement le texte de ton memo en rtf puis le charger dans le TRichEdit...
 
c'est bourrin ? oui mais ça fait plus classe  :D

Reply

Marsh Posté le 12-09-2002 à 11:05:08    

Ah intéressant, des précisions sur le format rtf s'impose donc.
 
c'est le truc avec {{rtf\ansi} etc .... ?

Reply

Marsh Posté le 12-09-2002 à 11:10:40    

oui ... le plus simple serait que tu te fasses toi meme un petit modèle sous word ou autre (surtout pour qu'il te cré la table des couleurs donc tape un texte avec toute les couleurs et les fontes souhaités)

Reply

Marsh Posté le 12-09-2002 à 11:12:37    

Pas con ...
 
Ensuite je fais juste un search & replace de mes \red pour les remplacer par {{color=red}}
 
Je dois sauver ca sur disk ou je peut le stocker dans une AnsiString et le balancer au controle direct ??

Reply

Marsh Posté le 12-09-2002 à 11:16:23    

non une fois que tu l'auras sous forme de chaine tu pourras le charger directement par la propriété lines->text  
 
et pour la couleur cela sera de la forme :
 
bla bla {\cb1 texte couleur1} blabla {\cb2 couleur2}

Reply

Marsh Posté le 12-09-2002 à 11:16:23   

Reply

Marsh Posté le 12-09-2002 à 11:18:29    

En fait ca a cette geule :
 

Code :
  1. {\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1036\deflangfe1036
  2. {\colortbl;
  3. \red0\green0\blue0;
  4. \red0\green0\blue255;
  5. \red0\green255\blue255;
  6. \red0\green255\blue0;
  7. \red255\green0\blue255;
  8. \red255\green150\blue0;
  9. \red255\green255\blue0;
  10. }
  11. {\cf1 Couleur}
  12. {\cf2 Couleur}
  13. {\cf3 Couleur}
  14. {\cf4 Couleur}
  15. {\cf5 Couleur}
  16. {\cf6 Couleur}
  17. {\cf7 Couleur}
  18. }


 
Je dois laisser le {{rtf/ ?? , la colortbl ???

n°212748
taureau
Posté le 12-09-2002 à 11:23:21  profilanswer
 

oui car la commande \cf utilise un index sur la table des couleurs donc tu laisses tout et tu te fais un modèle comme ça
 

{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1036\deflangfe1036  
 
{\colortbl;  
\red0\green0\blue0;  
\red0\green0\blue255;  
\red0\green255\blue255;  
\red0\green255\blue0;  
\red255\green0\blue255;  
\red255\green150\blue0;  
\red255\green255\blue0;  
}  
 
$TEXTE$
 
}

Reply

Marsh Posté le 12-09-2002 à 11:24:21    

Le modéle je peux le foutre en ressources ???

Reply

Marsh Posté le 12-09-2002 à 11:26:39    

oui mais tu peux aussi le définir en dur dans ton code sous forme d'une constante, ou plus rafiner permettre de le charger depuis le disque pour offrir le choix aux utilisateurs ...

Reply

Marsh Posté le 12-09-2002 à 11:27:12    

En fait le choix il l'ont pas donc ...
 
Donc vo mieux une bosse grosse constante qu'une ressource ?

Reply

Marsh Posté le 12-09-2002 à 11:32:25    

question performance ? je sais pas mais je dirais que c'est plus simple de définir une constante  :D  
 
en plus pendant la conception tu pourras la modifier plus rapidement mais bon l'embarquer sous forme de ressource ne vas on plus te demander trop de travail donc ... c toi choix  :D

Reply

Marsh Posté le 12-09-2002 à 11:33:09    

OKI merci, je commencer a me faire peur avec le sel start etc  
...

Reply

Marsh Posté le 12-09-2002 à 11:34:52    

Ce qu'il y a de bien avec un resouce c que tu peux modifier le chose sans recompiler.


---------------
Le Tyran
Reply

Marsh Posté le 12-09-2002 à 11:37:28    

oui c vrai...enfin moi je travaille sous delphi donc la compil est beaucoup beaucoup plus rapide qu'en c++  :D

Reply

Marsh Posté le 12-09-2002 à 11:40:46    

au fait sous delphi on peut remplacer const par un :
 
resourcestring
CreateError = 'Cannot create file %s';  
 
et cela cré automatiquement des chaines de ressources ...

Reply

Marsh Posté le 24-09-2002 à 09:33:05    

Bon alors ct presk ca ...
 
sous 2000 sa roxx, mais ss 98 :
 
http://paul.siramy.free.fr/_divers/tbledit01.gif
 
donc bon ...
La fanetre en bas a droite DEVRAIT contenir du texte en couleur etc ... donc ... c pas trop ca
 
Le tout a été compilé sans RTL dynamique et sans paquets d'exec.
 
L'exe original est ici :
http://iceman.maxcom.nl/Joel/Transfert/tbledit.zip

Reply

Marsh Posté le 24-09-2002 à 11:06:44    

avant de charger ton texte rtf force la propriété PlainText à false, il y a peut-etre une différence dans riched32.dll entre 2000 et 98...
 
autre chose qui n'a rien à voir mais lorsque tu changes de couleur tu ne supprimes pas l'ancien code couleur donc tu te retrouve avec des trucs du genre
 
{\cf1 } {\cf11 Enter your string here.}
 
ici {\cf1 } est inutile  

Reply

Marsh Posté le 24-09-2002 à 11:25:03    

ok je v essayer ca.
pour les codes redondants bon ben on fait avec, c juste une preview donc bon ...

Reply

Marsh Posté le 25-09-2002 à 10:40:22    

ben le truc c ke le plainText etait deja a false ...  :(  
Dois-je le forcer a flase avant chaque changements de la propriétés Text ??

Reply

Marsh Posté le 25-09-2002 à 10:46:38    

normalement non...mais là sous windows9x l'affichage correspont typiquement à un TRichEdit avec PlainText=true d'ou mon post...
 
donc tu peux toujours essayer de forcer à false pour voir si le bug ne vient pas de là c toujours possible...
 

Reply

Marsh Posté le 25-09-2002 à 10:54:40    

a la limite si tu te sers du TRichEdit que pour l'affichage tu peux aussi bien utiliser TWebBrowser et utiliser un modèle en l'html et si tu ne veux pas utiliser IE, alors va voir sur http://www.pbear.com/ et tu auras un composant gratuit pour afficher des pages html
 
sur http://www.tmssoftware.com/ tu trouveras des compos pour un affichage minimal html (parfait pour toi) mais la les compos sont payant si tu commercialises ton soft ...


Message édité par taureau le 25-09-2002 à 10:56:54
Reply

Marsh Posté le 25-09-2002 à 13:32:19    

Je vais essayer. L'appli est un freewrae donc normalement ca devrait allez.

Reply

Marsh Posté le 26-09-2002 à 08:48:25    

Ben voila, Taureau t trop fort ...
LE THMLLite a résolu tous ces problemes et d'autres que j'avais pas vu encore ...
 
Merci bien :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed

© 2018 Forum. All Rights Reserved.