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 :

La TStatusBar n'affiche pas tout mon texte


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut La TStatusBar n'affiche pas tout mon texte
    Bonjour,
    J'ai encore un petit problème.
    J'ai une statusbar qui dispose de 3 panels. Dans le 3ème panel, mon texte est assez long et n'est pas complètement écrit. J'ai essayé de mettre une grande valeur dans width du panel mais rien n'y fait.
    Mon code qui affiche le texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StatusBar1->Panels->Items[2]->Text = "P : pause, S : vit -10%, Q : vit +10%, Z : vit - 0,5, A : vit + 0,5, Echap : fermer, 1 : plein écran, 0 : fenetré, -> : droite, <- : gauche, bas : arrière, haut : avant, shift : simx5, control : speedx5, control + bouton souris";
    Une petite image pour illustrer mon problème :


    Avez-vous une idée pour résoudre ce problème autre que de mettre un label dans ce panel?

    Merci d'avance

  2. #2
    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,

    Je pense qu'il te faut :
    . mettre ton Panel en mode OwnerDraw
    . gérer le dessin du panel:
    dans le OnDrawPanel du StatusBar:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void __fastcall TForm1::StatusBar1DrawPanel(TStatusBar *StatusBar,
          TStatusPanel *Panel, const TRect &Rect)
    {
    switch (Panel->Index)
    {
    	case 2:
    		Panel->Width = StatusBar->Canvas->TextExtent(Panel->Text).cx + 2;
    			StatusBar->Canvas->TextRect(Rect, 1, 1, Panel->Text);
    	break;
    	default:
    	;
    }
    }
    En espérant t'aider,
    @ +

  3. #3
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Par défaut
    Une piste à explorer... peut être débile...
    L'affichage s'arrête bizarrement au 128ème caractère. 128 est un nombre bien connu de la base 2 ( 2, 4, 8, 16, 32, 64, 128, 256....)

    Mais ce n'est qu'une piste...
    Je n'ai pas trouvé dans l'aide, un chapitre évoquant une quelconque limite, mais sait-on jamais ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut
    Merci pour la réponse et la solution.

    J'ai un problème assez sérieux puisque je n'ai aucune solution pour le résoudre.

    En essayant ta méthode, j’ai l’erreur suivante :
    [C++ Erreur] Unit1.h(786): E2015 Ambiguïté entre 'TRect' et 'Types::TRect'
    Or, dans l’aide, il est indiqué que c’est un Types:: mais je ne peut pas rajouter Types:: à la déclaration car sinon C++Builder m’indique qu’elle n’est pas compatible avec l’évènement de la statusbar.

    Sachant que le TRec vient du fichier SDL.hpp de GLScene, je ne peut pas m'en passez puisque je fais un éditeur pour GLScene.

    Une idée?


  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Pourquoi ne pas rajouter un deuxième TStatusBar pour les libellés des valeurs, donc avec autant de panels qu'il y a de valeurs ?
    Pour la présentation, il suffit de supprimer le SizeGrip du TStatusBar portant les libellés !

    C'est juste une idée !

    A plus !

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut
    Je ne comprend pas bien. Il faudrait mettre une statusbar à l'intérieur d'une autre statusbar?

    J'ai essayé de mettre un TLabal et cela ne me convient pas.

    J'ai essayé d'ajouter le Types:: aux déclarations et d'ignorer les messages d'erreur mais du coup, il ignore cette fonction.

    Je viens de trouver où est cette limite (dans comctrls.pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    procedure TCustomStatusBar.UpdatePanels(UpdateRects, UpdateText: Boolean);
    const
      MaxPanelCount = 128;

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/05/2011, 14h38
  2. mon champs de formulaire n'affiche pas tout
    Par egelitros dans le forum Langage
    Réponses: 2
    Dernier message: 06/05/2007, 11h03
  3. Applet n'affiche pas tout
    Par zespoofiz dans le forum Applets
    Réponses: 1
    Dernier message: 23/05/2006, 15h17
  4. [SQL-Server] [MySQL] Le mssql_fetch_array() n'affiche pas tout
    Par PoZZyX dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/09/2005, 10h50
  5. [XSL]Comment faire ceci ?? Mon for-each n'affiche pas tout !
    Par Devil666 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 27/07/2005, 15h04

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