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

Composants VCL Delphi Discussion :

Info bulle sur les éléments du StatusBar


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 64
    Points
    64
    Par défaut Info bulle sur les éléments du StatusBar
    Bonjour,
    J'utilise Delphi5.
    Je voudrai savoir comment afficher un infobulle sur chaque élément du stautsBar .
    Merci

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    Comme bien d'autre cas, il faut trouvé l'objet sous la souris pour changer
    le hint du control en conséquence...
    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
     
    //***********************************************************************
    //*** OnMouseMouve du status bar...
    Procedure TForm1.StatusBar1MouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    Var
      i: integer;
      dx: integer;
    Begin
      //retrouve le panel sous la souris
      dx := 0;
      With StatusBar1 Do
      Begin
        For i := 0 To StatusBar1.Panels.Count - 1 Do
        Begin
          //augmente dx de chaque largeur de pannel de gauche à droite...
          dx := dx + Panels.Items[i].Width;
          //le dernier panel prend tout le reste
          //donc fix dx égale à la largeur de la status bar
          If i = Panels.Count - 1 Then dx := Width;
          //cherche sous quel pannel la souris est située
          If x < dx Then
          Begin
            Case i Of
              0: Hint := 'Premier panel';
              1: Hint := '2ème panel';
              2: Hint := '3ème panel';
            Else
              Hint := 'Oups! Ajout d''un panel mais oublié le hint!';
            End;
            //on a trouvé le panel alors on sort d'ici!
            break;
          End;
        End;
      End;
    End;
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  3. #3
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 64
    Points
    64
    Par défaut Afficahge des Hints
    Merci ça marche.
    Autre soucis, les hints ne s'affichent qu'après un click sur le panel.

  4. #4
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    par hasard
    StatusBar1.OnMoseMove

  5. #5
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 64
    Points
    64
    Par défaut
    J'ai mis le code proposé au début de la procédure, mais ça n'a pas changé .

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    582
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2003
    Messages : 582
    Points : 915
    Points
    915
    Par défaut
    mettez un ApplicationEvents sur votre fiche et dans
    OnShowHint mettez le code suivant.
    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
    40
    41
     
    Procedure TForm1.ApplicationEvents1ShowHint(Var HintStr: String;
      Var CanShow: Boolean; Var HintInfo: THintInfo);
    Var
      i: integer;
      dx: integer;
    Begin
      //Verifie si c'est le status bar qui veut montrer un Hint...
      If HintInfo.HintControl.ClassName = 'TStatusBar' Then
      Begin
        //retrouve le panel sous la souris
        dx := 0;
        With (HintInfo.HintControl) as TStatusBar Do
        Begin
          For i := 0 To Panels.Count - 1 Do
          Begin
            //augmente dx de chaque largeur de pannel de gauche à droite...
            dx := dx + Panels.Items[i].Width;
            //le dernier panel prend tout le reste
            //donc fix dx égale à la largeur de la status bar
            If i = Panels.Count - 1 Then dx := Width;
            //cherche sous quel pannel la souris est située
     
            If (HintInfo.HintPos.x - self.Left) < dx Then
            Begin
              Case i Of
                0: Hint := '1Premier panel';
                1: Hint := '2ème panel';
                2: Hint := '3ème panel';
              Else
                Hint := 'Oups! Ajout d''un panel mais oublié le hint!';
              End;
              HintInfo.HintStr := Hint;
              // Force le rafraichissement du Hint à tous les....
              HintInfo.ReshowTimeout := 500; //ms
              break;
            End;
          End;
        End;
      End;
    End;
    on enlevez bien sûr le code du OnMouseMouve du status bar proposé plus haut....
    Comment dupliquer un disque...ça vous intéresse?
    Tutoriel et code source delphi ici

  7. #7
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 111
    Points : 64
    Points
    64
    Par défaut
    Merci

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

Discussions similaires

  1. [OL-2007] Les info bulles sur images ne s'affichent pas
    Par nicolas2603 dans le forum Outlook
    Réponses: 0
    Dernier message: 22/09/2011, 11h34
  2. infos bulles sur les controles
    Par lity7 dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 03/04/2008, 11h35
  3. Info Bulle sur les elements d'une liste déroulante
    Par ReaseT dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/10/2006, 12h01

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