IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

D�tecter un mot de la textbox et le changer de couleur s'il est dans une liste


Sujet :

C++/CLI

  1. #1
    Membre confirm� Avatar de Hemophilius
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2008
    Messages
    105
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par d�faut D�tecter un mot de la textbox et le changer de couleur s'il est dans une liste
    Rebonjour,
    Voil�, j'ai une grande textbox multiligne. Je fais une liste (en pseudo-code, car je ne sais pas si c'est possible en C++/CLI) o� se trouve entre autre les mots AddHeroCreatures et CanMoveHero. Dans une autre liste, je fais de m�me, mais avec deux autre mots (toujours entre autres) : CREATURE_IMP et CREATURE_AIRELEMENTAL.

    Enfin, je voudrai un �v�nement qui v�rifie � chaque frappe un mot. Par exemple, si j'�cris dans ma textbox CREATURE_AIREL, il ne se passe rien, le mot reste en blanc. Et ce � chaque frappe jusqu'� ce que le mot contienne la cha�ne CREATURE_AIRELEMENTAL. Ceci d�clenche des actions, telles que le changement de couleur de ce mot.
    Si on �crit AddHeroCr, rien ne se passe. Si on continue le mot et qu'on �crit AddHeroCreatures, ce mot est chang� de couleur (une autre que celle de CREATURE_AIRELEMENTAL).
    Etc, etc.

    Vous voyez ce que je veux faire maintenant ^^
    Les probl�mes, c'est que je ne sais pas si il existe un �v�nement pour cela, je ne sais pas comment cr�er une liste (invisible � l'utilisateur) dans laquelle on pourrait v�rifier � chaque frappe que le mot tap� en fait partie, et je ne sais pas non plus comment on change de couleur un mot pr�cis dans une textbox multiligne...

    Merci d'avance,
    Hemophilius.

  2. #2
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    utiliser un richtextbox sera plus adapt� � mon avis.

  3. #3
    Membre confirm� Avatar de Hemophilius
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2008
    Messages
    105
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par d�faut
    Merci, mais je viens de regarder les m�thodes que la classe RichTextBox, et il n'y a pas celles qui m'int�ressent, enfin, pas plus qu'une TextBox normale... Il n'y a pas d'�v�nements qui me conviendrait non-plus Le texte doit �tre color� automatiquement et en temps r�el, sans qu'il y ait de gros lag � chaque frappe pour v�rifier si le mot est dans la liste...

    Me tromperais-je ?

  4. #4
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    il faut que tu fasses la coloration en temps r�el oui

  5. #5
    Membre confirm� Avatar de Hemophilius
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2008
    Messages
    105
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par d�faut
    Justement, alors... Comment ?
    D�sol� d'�tre si ignare...

  6. #6
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    alors, premi�re chose � faire, g�n�rer l'�v�nement TextChanged sur le richTextBox

    ensuite, imaginons que je veuille changer la couleur du mot "nico" en rouge, je vais faire :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    System::Void richTextBox1_TextChanged(System::Object^  sender, System::EventArgs^  e)
    {
    	int i = richTextBox1->SelectionStart;
    	Color color = richTextBox1->SelectionColor;
    	String ^searchString = "nico";
    	int pos = richTextBox1->Find(searchString);
    	if (pos > 0)
    	{
    		richTextBox1->SelectionStart = pos;
    		richTextBox1->SelectionLength = searchString->Length;
    		richTextBox1->SelectionColor = Color::Red;
    		richTextBox1->SelectionStart = i;
    		richTextBox1->SelectionColor = color;
    	}
    }

  7. #7
    Membre confirm� Avatar de Hemophilius
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2008
    Messages
    105
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par d�faut
    Merci beaucoup
    Le code doit cependant �tre encore am�lior� : si je place le curseur en plein milieu du mot color�, et que je commence � �crire, le mot devrait se recolorer en la couleur par d�faut, car ce mot "nico" n'existe plus...
    Et aussi, y aurait-il un moyen de chercher dans une liste � chaque �v�nement, au lieu de faire des centaines de conditions pour chacun des mots cl�s que je veux colorer, en plusieurs couleurs diff�rentes ?
    Exemple : Si le mot est dans List1, on le colore en rouge. Si il est dans List2, en bleu, etc.

  8. #8
    Membre confirm� Avatar de Hemophilius
    Homme Profil pro
    �tudiant
    Inscrit en
    Juin 2008
    Messages
    105
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 105
    Par d�faut
    C'est OK, voil� le code final :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
            void ColorIDs()
            {
                 auto int i;
                 auto int charCount = 1;
                 auto int staticSelection = this->TriggersRedactionSpace->SelectionStart;
                 auto int currentSelection = ((this->TriggersRedactionSpace->SelectionStart) - 1);
                 if (currentSelection < 0) currentSelection = 0;
                 for (i=0; (i<50) && (this->TriggersRedactionSpace->SelectedText != " ") && (this->TriggersRedactionSpace->SelectedText != "\n") && (currentSelection != 0); i++)
                 {
                     this->TriggersRedactionSpace->Select((currentSelection - 1), 1);
                     if (this->TriggersRedactionSpace->SelectedText != " ")
                         charCount++;
                     currentSelection--;
                 }
     
                 if ((staticSelection - charCount) < 0)
                     this->TriggersRedactionSpace->Select(0, (charCount - 1));
                 else
                     this->TriggersRedactionSpace->Select((staticSelection - charCount), (charCount - 1));
     
                 System::String ^searchString = this->TriggersRedactionSpace->SelectedText;
                 auto int loopIndex;
                 auto int loopEnd = this->AfficherIDsINVISIBLE->Items->Count;
                 for (loopIndex=0; loopIndex<loopEnd; loopIndex++)
                 {
                     this->AfficherIDsINVISIBLE->SetSelected(loopIndex, true);
                     if (searchString == (this->AfficherIDsINVISIBLE->SelectedItem->ToString()))
                         this->TriggersRedactionSpace->SelectionColor = Color::Coral;
                 }
                 this->TriggersRedactionSpace->SelectionStart = staticSelection;
                 this->TriggersRedactionSpace->SelectionLength = 0;
            }
     
    ...
     
    private: System::Void TriggersRedactionSpace_KeyUp(System::Object  ^sender, System::Windows::Forms::KeyEventArgs^  e) {
                 if (e->KeyValue == 32)
                     ColorIDs();
             }

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [C# 2.0] D�tecter les doublons dans une List<string>
    Par Rodie dans le forum Windows Forms
    R�ponses: 36
    Dernier message: 30/03/2013, 15h21
  2. R�ponses: 2
    Dernier message: 25/11/2011, 22h29
  3. R�ponses: 4
    Dernier message: 04/04/2011, 11h46
  4. R�ponses: 1
    Dernier message: 26/10/2006, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo