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 :

[TlistBox] Comment changer le Hint ?


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 45
    Points : 25
    Points
    25
    Par défaut [TlistBox] Comment changer le Hint ?
    salut

    jai une Tlistbox avec differents elements, jaimerai que quand je mets le pointeur de la souris dessus il y ait une etiquette (la propriete hint) qui affiche le texte placé sur l'index surlequel se trouve la souris.

    mettre du texte en statique c faisable mais je sais pas comment m'y prendre pour changer le contenu du 'hint' en fonction de la position où je me trouve sur les lignes de la Tlistbox.

    si qqun a une idée, je suis tout ouïe

    merci

  2. #2
    Membre émérite
    Avatar de Merlin
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2002
    Messages
    524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 524
    Points : 2 883
    Points
    2 883
    Par défaut
    Tu utilises l'événement OnMouveMove de la listbox, puis dans l'event tu calcules la ligne où se trouve le curseur avec la méthode ItemAtPos de la listbox... il ne reste plus qu'à changer le Hint en fonction de la ligne :-)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    salut

    je viens de tester, pour le itematpos cest effectivement ce quil me fallait par contre pour levenement OnMouseMove y a un probleme cest que
    quand je suis sur une ligne du TListBox il maffiche bien letiquette

    par contre quand je me deplace vers une autre ligne il ne "raffraichit" pas le contenu de letiquette et je dois sortir du ListBox pour y revenir pour le voir changer

    (en fait le rafraichissement du hint se fait quand je clic sur le tlistbox, le deplacement de la souris a linterieur ny suffit pas)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    voici le code que je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,   Y: Integer);
     
    var APoint:TPoint;
     
    begin
     
      APoint.X :=X; APoint.Y :=Y;
      application.HintPause:=0; // tps pr que l'etiquette apparaisse 
                                            // (ici instantané)
      application.HintHidePause:=5000; //duree d'affichage de letiquette
      listbox1.Hint:=inttostr(listbox1.itematpos(apoint,false));
     
    end;
    pourtant si j'ajoute un memo1.Lines.Add(inttostr(i)); en faisant incrementer i à chaque passage dans la procedure OnMouseMove on voit bien le memo qui se rempli au fur et à mesure que la souris bouge par contre pour lactualisation du hint...rien à faire

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Si tu utilise un Tlistview à la place d'un tlistbox, c'est très facile à faire: event OnInfoTip.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    je veux bien essayer, mais apparement cest pas aussi simple d'ajouter des elements dedans.
    avec la TListBox un listbox.items.add('element ajouté') suffit
    alors que là un listview.items.add n'attends pas de parametres
    jvois pas comment faire pour ajouter un element, et l'aide nest pas super claire pour le debutant que je suis

    du coup la TListBox est plus pratique mais le seul hic c'est le pb exposé plus haut.

    en fait si je fais un comparatif avec delphi, lorsqu'on balade la souris sur le code que lon developpe on voit apparaitre des hint a chaque fois qu'on se place sur un mot clé particulier, sans pour autant sortir du code et y revenir pour que le hint change, c'est un peu ca que je voudrai.
    ils ont surement dut utiliser un OnMouseMove mais la difference c que eux ca marche et moi nan lol

  7. #7
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    c'est justement ListView.Items.Add qui renvoie le paramètre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var t:tlistitem;// Je crois que c'est ça...
    begin
      t:=ListView1.Items.Add;
      t.Text:='Hop'; // C'est peut-être Caption...
      t.ImageIndex:=0;
    end;
    Ce code crée un nouvel item dans ListBox1 avec le premier icone de la TImageList associée et "Hop" comme texte...

    Bonne chance
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    je viens de le faire, en effet ca remplit bien le t listview mais y a 2 choses qui ne collent pas avec mon appli:
    les chaines de caracteres sont coupées et compléetées par des points de suspensions ' ... ' automatiquement
    et chaque entrée ne s'ajoute pas lune au dessous de lautre mais l'une à coté de lautre.
    je navais pas ca avec la TListBox. peut etre y a til moyen de faire un traitement?

  9. #9
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Utilise un TListBox et la solution de Merlin.

    Pour rafraichir, il suffit de demander manuellement l'affichage du Hint s'il change. Exemple ici sur un TStringGrid :
    http://nono40.developpez.com/sources/source0035.html
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 45
    Points : 25
    Points
    25
    Par défaut
    wahouuuuuuuuuuuuuuu ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ActivateHint(Mouse.CursorPos);
    est excellent !! merci beaucoup!!
    ca marche niquel maintenant

    et merci a tous de m'avoir proposé vos solutions.

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

Discussions similaires

  1. [C#] Comment changer dans une chaine
    Par onouiri dans le forum ASP.NET
    Réponses: 7
    Dernier message: 13/05/2004, 13h17
  2. Comment changer l'heure système ?
    Par Lung dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 26/04/2004, 10h24
  3. Comment changer des mots dans un fichier?
    Par ptitbonum dans le forum Linux
    Réponses: 5
    Dernier message: 07/04/2004, 23h42
  4. comment changer d'attribut de fonte dans un Tlabel?
    Par sb dans le forum Composants VCL
    Réponses: 3
    Dernier message: 21/08/2002, 16h53
  5. TextOut : comment changer de font
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 15/07/2002, 20h46

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