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++Builder Discussion :

[TStatusBar] Modifier la couleur du texte d'un panel


Sujet :

C++Builder

  1. #1
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut [TStatusBar] Modifier la couleur du texte d'un panel
    Bonjour,

    J'aurai besoin de votre aide pour modifier la couleur du texte d'un panel de ma status bar.

    J'ai tenté en modifiant directement dans le panneau fait pour mais le changement n'est pas pris en compte pour les panels du status.

    Donc avez vous une solution pour changer la couleur de la police ou est-ce infaisable (ce qui m'étonnerai) lol

    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Par défaut
    à mon avis le mieux c'est d'y mettre un TEdit par dessus !! je m'y suis penché aussi et j'ai pas trouvé donc j'y créé un TEdit en dynamique que je viens mettre dans le bon StatusPanel ( avec le Parent ) ... ( ca se fait assez bien )

  3. #3
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Dans ce cas autant mieux mettre un TLabel.

    Et merci pour l'information

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Hello

    Tu peux aussi redéfinir la propriété Style de ton Panel en la mettant à psOwnerDraw. Ensuite tu redessines le panel sur l'événement OnDrawPanel du TStatusBar:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void __fastcall TForm1::StatusBar1DrawPanel(TStatusBar *StatusBar, TStatusPanel *Panel, const TRect &Rect)
      {
      StatusBar->Font->Color = clRed;
      StatusBar->Canvas->TextOutA(4,4,Panel->Text);
      }
    A++

  5. #5
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Merci pour ton code, il change bien la couleur mais pas la couleur de fond...
    J'ai précisé une couleur dans les paramètres de mon TStatusBar qui n'est pas la même affiché lors de l'affichage du hint...

    Il y a pas un moyen de mettre aussi la couleur de fond ?

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Bonsoir, jte tente de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1->Caption = StatusBar->Panels->Items[0]->Text;
    Pour afficher le hint dans mon label....J'ai placé ce code dans
    void __fastcall TFiche::StatusBarHint(TObject *Sender)
    Mais non seulement je perds mon hint dans la statusbar mais mon label n'affiche rien non plus.

    Pouvez vous m'aider ?

  7. #7
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,
    Il y a pas un moyen de mettre aussi la couleur de fond ?
    Il faut essayer avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    StatusBar->Canvas->Brush->Color = //la couleur....
    dans le code de l'évènement OnDrawPanel

    @ +

  8. #8
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    (re)Bonsoir,
    Pour le Hint, as-tu vérifié la valeur de la propriété AutoHint du StatusBar ? (qui doit être a true afin de générer un évènement OnHint...)
    @ +

  9. #9
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Cool je mets ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StatusBar1->Canvas->Brush->Color = 0x007B4E24;
    Et j'ai un gros warning :
    Affectation de int en Tcolor
    Sinon merci c'est nickel

  10. #10
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Essaies peut etre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    StatusBar->Canvas->Brush->Color = (TColor)0x007B4E24;
    ...

  11. #11
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Parfait j'avais pas pensé au cast

    Dernière question : Mon deuxième panel n'affihe pas de hint mais juste une valeur comment je fais pour l'afficher comme pour le hint...

    Là j'ai rien alors que sans cette fonction, ca passait très bien mais c'était en noir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StatusBar->Panels->Items[1]->Text = 'texte"

  12. #12
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Dernière question : Mon deuxième panel n'affihe pas de hint mais juste une valeur comment je fais pour l'afficher comme pour le hint...

    M...e, excuses moi, je comprends pas trop la question...
    (et la je suis ajeun, ce qui est rare pour un samedi ! lol )

  13. #13
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Ok lol ..

    Alors j'ai deux panels dans la StatusBar, un qui affiche les hint et l'autre qui affiche un élément dynamique.

    La solution que tu m'as donnée fonctionne très bien pour les hint mais pas pour afficher mon élément dynamique. d'où mon problème

  14. #14
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Hé bien, pour tout avouer...je suis assez embêté depuis tout a l'heure avec l'évènement OnDrawPanel.
    En effet, comme suggéré par totoche76, j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    StatusBar->Canvas->TextOutA(4, 4,Panel->Text);
    mais rien, que dalle, pas de texte tandis que le changement de couleur de fond fonctionne.
    Y a forcement qqchose que j'oublie qqpart mais je vois pas encore.
    C'est c.n ca

  15. #15
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    DOnc dans le noir complet lol

  16. #16
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Hello

    Le code que j'avais filé au début n'est pas terrible quand il y a plusieurs panels à remplir. Là ça devrait aller mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void __fastcall TForm1::StatusBar1DrawPanel(TStatusBar *StatusBar, TStatusPanel *Panel, const TRect &Rect)
     {
      StatusBar->Canvas->Brush->Color = clBlue;
      StatusBar->Canvas->FillRect(Rect);
      StatusBar->Font->Color = clRed;
      StatusBar->Canvas->TextOut(Rect.Left+1,Rect.Top+1,Panel->Text);
     }
    Ne pas oublier le psOwnerDraw sur les panels concernés...
    Le FillRect permet de remplir l'ensemble du panel, et pas juste de donner un fond au texte à écrire.

    Sinon, je n'ai pas bien compris l'histoire du hint ...
    Tu veux que lorsque tu ballades la souris sur tes contrôles, un hint soit affiché à la fois sur le contrôle ET dans ta StatusBar, c'est bien ça (en gérant des hints courts/longs grâce au caractère |)?? AutoHint à true doit suffire pour faire cela.

  17. #17
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Non je fais le hint uniquement dans la StatusBar.

    Sinon je teste ton code tout de suite

    Edit : Nickel c'est parfait, bon j'ai adapté à mon cas...Et c'est super good....Pour l'alignment dans le deuxième panel je m'en passerai

    Ah oui, aussi merci beaucoup à vous tous pour votre aide

  18. #18
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Genre: mettre le Hint de tes contrôles à "|libellé" (avec la barre verticale devant), ShowHint à true sur le contrôle et AutoHint sur la StatusBar ???

  19. #19
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Ouais c'est ce que je fais...
    J'ai rempli la case hint pour tout mes éléments et j'ai mis mon panel de gauche sur showhint à true et celui de droite affiche une information bdd donc ne change que s'il y a une modification sur la bdd

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

Discussions similaires

  1. Modifier la couleur du texte d'une cellule d'un tableviewer.
    Par tatemilio2 dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 27/06/2008, 08h28
  2. Modifier la couleur du texte d'un champ texte?
    Par wormseric dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 13/09/2007, 15h10
  3. Réponses: 7
    Dernier message: 05/04/2007, 23h09
  4. Réponses: 1
    Dernier message: 08/06/2006, 12h01
  5. Comment modifier la couleur du texte sélectionné ?
    Par VincentR dans le forum Composants VCL
    Réponses: 4
    Dernier message: 14/06/2005, 22h29

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