D�tect� le wordwrap dans un TMemo
Bonjour tous
Je suis entrain de faire une appli o� l'utilisateur pourra entrer ses propres infobulles.
Le principe est simple : l'op�rateur choisi "entrer un commentaire" gr�ce � un menupopup sur le composant. De la il �crit son message dans un TMemo.
Le texte du TMemo est alors enregistr� dans un fichier ini.
Tout les caract�res correspondant � "\r\n" sont remplac� par des ";". Le "\r\n" appara�t quand l'utilisateur frappe sur entr�e (:bug: ). Ainsi dans le fichier ini, le texte sera complet lors de l'affichage de l'infobulle.
Lorsque l'utilisateur �crit � la suite sans taper "entr�e". le Tmemo fait un retour � la ligne logiciel gr�ce � wordwrap.Quand j'enregistre dans mon fichier ini, cela correspond � une seule ligne.
Mon probl�me est que lorsque je affiche cette ligne dans une infobulle, cela affiche 1seule et grande ligne. Je trouve cela tr�s moche.
Et j'aimerai donc pouvoir r�duire cette ligne en un petit paragraphe.
Y'a t il un moyen de d�tecter le wordwrap?
Si non, avez vous une id�e de comment faire?
J'ai une solution pas tr�s satisfaisante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
{
TIniFile *pIniFile = new TIniFile(IniPath);
Text =Memo->Text;
AnsiString tmp,tmp1;
tmp= Text;
int i=1;
int L = Text->Length();
/*Défini des retours chariots pour les phrases trop longues*/
for(int j=0;j<L;j++)
{
//Regarde à chaque espace si la phrase n'est pas trop longue
if (Tmp.IsDelimiter(" ",j)==true)
{
if (j>(33*i)) //Si trop de caractère
{
Tmp.Insert("\r\n",j); //Insere le retour chariot
i+=1;
j+=1;
}
}
}
Text = StringReplace(Tmp, "\r\n", ";", TReplaceFlags() << rfReplaceAll);/*Remplace le sauts de ligne par 1 pointvirgule*/
pIniFile->WriteString(Unit,Name,Text);
Text= "";
delete pIniFile; |
Si l'utilisateur �crit tous en ligne et que de temps en temps il tape "entr�e". Le paragraphe n'est pas r�gulier. Je continue � bosser dessus.
Mais si quelqu'un � une meilleur solution je suis preneur.
Merci de votre aide
++