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 :

affichage de tooltip (bulle d'aide) sur un titre, un onglet ou un TreeView


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 39
    Points : 28
    Points
    28
    Par défaut affichage de tooltip (bulle d'aide) sur un titre, un onglet ou un TreeView
    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.

  2. #2
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    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

  3. #3
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    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

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 39
    Points : 28
    Points
    28
    Par défaut
    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

  5. #5
    Membre chevronné
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Points : 2 189
    Points
    2 189
    Par défaut
    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

  6. #6
    Membre expert
    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 : 53
    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
    Points : 3 204
    Points
    3 204
    Par défaut
    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.

    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 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...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 39
    Points : 28
    Points
    28
    Par défaut
    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

  8. #8
    Membre expert
    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 : 53
    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
    Points : 3 204
    Points
    3 204
    Par défaut
    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 ...
    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 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...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  9. #9
    Membre expert
    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 : 53
    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
    Points : 3 204
    Points
    3 204
    Par défaut
    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
    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;
    .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
    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);
    }
    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
     
    void __fastcall TForm2::FormMouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y)
    {
    if (hwndTT != NULL)
    {
    	ShowWindow(hwndTT, SW_HIDE);
    }
    }
    Bien que l'on pourrais utiliser un Timer, histoire de la faire disparaitre en temps voulu.

    A travailler, certes ...

    En espérant t'aider,
    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 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...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  10. #10
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 39
    Points : 28
    Points
    28
    Par défaut
    Nickel!! Il y a 2 ou 3 petits trucs à changer, je travaille dessus, mais sur le principe c'est ça.

    merci beaucoup
    @+

  11. #11
    Membre expert
    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 : 53
    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
    Points : 3 204
    Points
    3 204
    Par défaut
    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,
    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 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...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  12. #12
    Nouveau membre du Club
    Inscrit en
    Février 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 39
    Points : 28
    Points
    28
    Par défaut
    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
    @+

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

Discussions similaires

  1. bulles d'aide sur une div
    Par tabouet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 09/11/2010, 14h03
  2. Affichage de l'info bulle d'aide sur une fonction
    Par David Fouejio dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/02/2009, 10h19
  3. bulle d'aide sur un activeX
    Par yeah_baby64 dans le forum WinDev
    Réponses: 2
    Dernier message: 23/11/2007, 10h14
  4. bulle d'aide sur image/lien
    Par chtef dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/02/2005, 11h34

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