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

wxWidgets Discussion :

wxWidgets : couleur de texte sur une seule ligne


Sujet :

wxWidgets

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4
    Points : 4
    Points
    4
    Par défaut wxWidgets : couleur de texte sur une seule ligne
    Bonjour
    J'utilise wxWidgets depuis peu, je ne maitrise donc pas tres bien cet outil. Mon but est de faire une zone de log, pour cela j'utilise un champ de texte "log" de type wxTextCtrl (couleur de texte par defaut : noir). Je souhaite que les erreurs s'affichent en rouge, pour contraster avec le reste des informations qui s'affichera en noir.
    J'essais donc de changer la couleur de texte lorsqu'une erreur survient, mais je ne dois pas utiliser la bonne méthode. Je m'explique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      wxTextAttr attribut;
      attribut.SetTextColour(wxColour(255,0,0));
     
            *log << "ceci doit etre noir\n";
            log->SetDefaultStyle(attribut); 
            *log << "ceci doit etre rougne\n";
    Mais ce code donne :
    ceci doit etre noir
    ceci doit etre rougne
    Bref, aucun changement de couleur.

    Pour changer la couleur d'un texte, on peut faire autrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            *log << "ceci doit etre noir\n";
            //log->SetForegroundColour(wxColour( 255, 0, 0));
            *log << "ceci doit etre rouge\n";
    Mais cela donne :
    ceci doit etre noir
    ceci doit etre rougne
    Bref SetForegroundColour change la couleur de TOUT le texte, y compris celui deja present, alors que je ne veux qu'une ligne.
    J'ai également testé SetStyle, qui fonction sensiblement comme SetDefaultStyle à ceci pret qu'il faut préciser un début et une fin, mais il ne change pas non plus la couleur. Comment faire pour ne modifier que la bonne ligne ?

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    C'est un controle texte de base, qui ne gère pas un style différent par caractère / ligne, mais un style global à tout le controle. Il te faut utiliser un autre controle qui permette ca. Malheuresement je ne suis pas sûr qu'il y en ai un. Au pire un controle HTML. Il me semble qu'il y a un controle qui utilise le moteur de mozilla.

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 180
    Points
    180
    Par défaut
    si si la RichTextBox

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    C'est quoi le composant wxWidgets associé ?

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 150
    Points : 180
    Points
    180
    Par défaut
    ya pas desolé... je me suis precitpité....
    Plus qu'a overrider wxtextctrl....

  6. #6
    cpp
    cpp est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    on peut aussi utiliser le flag wxTE_RICH2 dans le wxTextCtrl et la méthode SetStyle(long start, long end, const wxTextAttr& style)
    pour changer juste la couleur de texte, la couleur de fond et la fonte de la selection (start->end).
    Le flag est pour Win32 il est ignoré sous les autres plateformes ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Je n'arrive pas a me servir de SetStyle, peux tu me donner un exemple ? lorsque je l'appelle, aucune modif n'est faite.
    Ca vient peut etre des "start" et "end" que je précise mal (en fait, au pif, 1 et 10 pensant que ca va modifier 10 characteres).

  8. #8
    cpp
    cpp est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    //Dans le .h :
    wxTextCtrl *m_TextCtrlDoc;
    //Dans le .cpp Initialisation du ctrltxt (ici le parent est un splitter)
    m_TextCtrlDoc = new wxTextCtrl(m_splitter, -1, wxString(""),
    wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_RICH2 );

    //Puis pour utilisation, TXT est du type wxString
    long n = m_TextCtrlDoc->GetInsertionPoint();
    m_TextCtrlDoc->WriteText(TXT);
    long m=m_TextCtrlDoc->GetInsertionPoint();
    wxFont *FT = new wxFont(16,wxROMAN,wxNORMAL,wxNORMAL,FALSE,"",wxFONTENCODING_SYSTEM);
    m_TextCtrlDoc->SetStyle(n,m,wxTextAttr(*wxRED,*wxBLACK,*FT ));

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Ok merci beaucoup je teste ca dès que possible.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/05/2013, 12h27
  2. enregistrements sur une seul ligne d'une zone de texte
    Par maverick91 dans le forum Access
    Réponses: 5
    Dernier message: 12/06/2007, 11h35
  3. [CSS][firefox]positionner mes div sur une seule ligne
    Par hansaplast dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 29/03/2006, 14h44
  4. Plusieures infos sur une seule ligne avec ou sans tableau
    Par Him dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/03/2006, 14h16
  5. Synedit -commentaires sur une seule ligne
    Par Malone dans le forum Composants VCL
    Réponses: 2
    Dernier message: 03/02/2006, 19h44

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