Bonjour,
J'utilise Delphi5.
Je voudrai savoir comment afficher un infobulle sur chaque élément du stautsBar .
Merci
Bonjour,
J'utilise Delphi5.
Je voudrai savoir comment afficher un infobulle sur chaque élément du stautsBar .
Merci
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
Merci ça marche.
Autre soucis, les hints ne s'affichent qu'après un click sur le panel.
par hasard
StatusBar1.OnMoseMove
Code : Sélectionner tout - Visualiser dans une fenêtre à part StatusBar1.Setfocus
J'ai mis le code proposé au début de la procédure, mais ça n'a pas changé .
mettez un ApplicationEvents sur votre fiche et dans
OnShowHint mettez le code suivant.
on enlevez bien sûr le code du OnMouseMouve du status bar proposé plus haut....
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;
Comment dupliquer un disque...ça vous intéresse?
Tutoriel et code source delphi ici
Merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager