Bonjour à tous,
J'ai 3 petites questions, toutes sur les tooltips
je travaille sur BCB6
je voudrais savoir si c'est possible d'afficher un tooltip (bulle d'aide) sur le titre d'une fenetre, sur un onglet ou sur un élément dans un TreeView.
Merci.
Bonjour à tous,
J'ai 3 petites questions, toutes sur les tooltips
je travaille sur BCB6
je voudrais savoir si c'est possible d'afficher un tooltip (bulle d'aide) sur le titre d'une fenetre, sur un onglet ou sur un élément dans un TreeView.
Merci.
Je n'ai pas de réponse direct, mais tu peux regarder du côté de EM_SHOWBALLOONTIP avec un SendMessage, malheureusement je crois que sa fonctionne seulement avec des TEdit.
- Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
- Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
- Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon
c'est tout simple..
dans la proriété Hint du composant, tu mets le text que tu veux afficher.
et tu mets la propriété ShowHint à true.
en revanche, pour les onglets, cela ne fonctionnera que lorsque tu survolera la page.
A+
Ils ne savaient pas que c'était impossible alors ils l'ont fait (Mark Twain)
_ _ _ _ _ _ _ _ _
La planète ne nous appartient pas, elle nous a été prêtée par nos enfants
_ _ _ _ _ _ _ _ _
Technos : Access, C++ Builder, SQL, PostgreSQL, Crystal Reports, XML entre autres
j'ai regardé pour EM_SHOWBALLOONTIP en effet ca concerne les edits
en ce qui concerne le Treeview j'arrive à afficher le hint sans soucis mais ce que je souhaiterais c'est afficher un hint différent suivant l'item survolé dans le treeview
j'ai vu que c'était possible pour une ListView malheureusement les événement pour les 2 objets ne sont pas similaire du coup ca marche pas
merci pour les réponses mais tout ça me conforte dans l'idée que ce n''est pas facile à mettre en place
En utilisants les messages sur cette page tu devrais sans doute être capable de faire ce que tu veux:
http://msdn.microsoft.com/library/de...ip/reflist.asp
- Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
- Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
- Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon
Bonsoir,
A mon humble avis, pour déclencher l'apparition d'une bulle d'aide lors du passage de la souris sur le titre d'une fenêtre, il te faut rajouter le contrôle d'un message a la fenêtre a l'aide de BEGIN_MESSAGE_MAP et capter le message WM_NCMOUSEMOVE.
@ +
Current StatusAux persévérants aucune route n'est interdite.
Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
Faîtes quelque chose de bien avec vos petits sous: Enfants du MekongAvec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
j'ai regardé BEGIN_MESSAGE_MAP et WM_NCMOUSEMOVE mais je débute avec BCB6 et je ne vois pas comment il faut s'en servir.
De même le Message TTM_NEWTOOLRECT semblerait convenir pour ce que j'ai à faire mais la aussi je pèche par manque d'expérience quelqu'un peut il éclairer ma lanterne...
merci
Bonsoir,
J'ai commencé a bosser sur une solution, me reste a déclencher la 'bulle d'aide' puisque l'interception des messages se passe bien de mon côté.
Je poste cela dès que possible, ou au moins qq chose pour servir de 'piste' quoi ...
@+
Current StatusAux persévérants aucune route n'est interdite.
Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
Faîtes quelque chose de bien avec vos petits sous: Enfants du MekongAvec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
Bonsoir,
Une idée, pas parfaite mais qui pourrais constituer une piste tout de même.
.on défini la zone correspondant au titre de la fenêtre, qui réagira lors du survol par la souris
.on crée une petite fenêtre a 'customiser' pour afficher.
(pas parfait, tout de même)
.dans le .h, en private
.dans le .cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void __fastcall OnNCMOUSEMOVE(TMessage& msg);//on gigote la souris au dessus de la zone non cliente //pour capter le message dans la zone non cliente BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_NCMOUSEMOVE,TMessage,OnNCMOUSEMOVE) END_MESSAGE_MAP(TForm) TRect zrect; //pour la zone du caption de la TForm //pour la création de la fenêtre HWND hwndTT; WNDCLASSEX *principale;
PS : dans le OnMouseMove de la TForm, je rajoute:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55 void __fastcall TForm2::FormCreate(TObject *Sender) { //definition de la zone du caption de la fenêtre GetWindowRect(this->Handle, &zrect); int wRect = this->Canvas->TextExtent(this->Caption).cx; int hRect = GetSystemMetrics(SM_CYSMICON);//pour la hauteur de la zone //je prends celle d'un petit icone int posLeft = GetSystemMetrics(SM_CXSMICON); zrect.left = posLeft; zrect.right = posLeft + wRect; zrect.bottom = hRect; //fenêtre 'perso' principale = new tagWNDCLASSEXA; principale->cbSize = sizeof(WNDCLASSEX); principale->style = CS_HREDRAW|CS_VREDRAW; principale->lpfnWndProc = DefWindowProc; principale->cbClsExtra = 0; principale->cbWndExtra = 0; principale->hInstance = this->Handle; principale->hIcon = NULL; principale->hCursor = LoadCursor(NULL,IDC_ARROW); principale->hbrBackground = reinterpret_cast< HBRUSH >(COLOR_WINDOW+1); principale->lpszMenuName = NULL; principale->lpszClassName = "MouseInfo"; principale->hIconSm = NULL; RegisterClassEx(principale); } //traitement du message dans la zone non cliente void __fastcall TForm2::OnNCMOUSEMOVE(TMessage& msg) { TPoint mousepos = Mouse->CursorPos; if (hwndTT == NULL) { hwndTT = CreateWindowEx(WS_EX_TOOLWINDOW,"MouseInfo","Info souris", TTS_ALWAYSTIP | WS_EX_STATICEDGE, zrect.left + 2, zrect.bottom + 2, 110, 50, NULL, (HMENU) NULL, this->Handle, NULL); } if (mousepos.y < zrect.bottom) { if (mousepos.x > zrect.left && mousepos.x < zrect.right) { ShowWindow(hwndTT, SW_SHOW); String S = "Souris sur zone !"; HDC hdc; hdc = GetDC(hwndTT); TextOut(hdc, 0, 2, S.c_str(), S.Length()); } else { ShowWindow(hwndTT, SW_HIDE); } } this->DefaultHandler(&msg); }
Bien que l'on pourrais utiliser un Timer, histoire de la faire disparaitre en temps voulu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void __fastcall TForm2::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if (hwndTT != NULL) { ShowWindow(hwndTT, SW_HIDE); } }
A travailler, certes ...
En espérant t'aider,
@ +
Current StatusAux persévérants aucune route n'est interdite.
Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
Faîtes quelque chose de bien avec vos petits sous: Enfants du MekongAvec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
Nickel!! Il y a 2 ou 3 petits trucs à changer, je travaille dessus, mais sur le principe c'est ça.
merci beaucoup
@+
Cool ... maintenant, si tu en as la possibilité, une fois que tu as obtenu ce que tu voulais en terme d'affichage de fenêtre, poster le code.
Histoire de voir comment tu as procédé, ça peut servir ... même a moi !
Bon courage,
@ +
Current StatusAux persévérants aucune route n'est interdite.
Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
Faîtes quelque chose de bien avec vos petits sous: Enfants du MekongAvec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
Ok pas de problème je le posterais par contre ça pourra mettre un peu de temps vu que je passe sur autre chose, je n'ai pas le temps de faire ça bien pour le moment, mais comme c'est à faire...
merci encore
@+
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