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

Lazarus Pascal Discussion :

[0.9.31] StringGrid et Hint sur cellules [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [0.9.31] StringGrid et Hint sur cellules
    Bonjour,

    Je voudrais afficher des Hints sur certaines cellules d'une StringGrid lors de leur survol à la souris, avec un affichage de la bulle d'aide sans trop de latence. J'ai essayé de modifier la vitesse des Hint mais je me heurte au déclenchement de l'affichage de la bulle lors du saut d'une ligne à une autre ou d'une colonne à une autre.

    La solution la plus satisfaisante que j'ai trouvée est la combinaison d'un TStaticText avec la TStringGrid :
    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
     
    procedure TFormMain.FormCreate(Sender: TObject);
    begin
       StaticTextHint.Parent := StringGrid1;
    end;
    [...]                              
    procedure TFormMain.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);
    var
      aCol,aRow : integer;
      sMess : string;
    begin
     StringGrid1.MouseToCell(X, Y, aCol, aRow);
     if (aCol > 4) and (aCol < 8) and (aRow > 0) then begin
       sMess := IntToStr(aCol) + ',' + IntToStr(aRow);
       StaticTextHint.Left := X; //A cet emplacement pour assurer la fluidité
       StaticTextHint.Top  := Y; //de l'affichage
       if StaticTextHint.Caption <> sMess then begin 
          StaticTextHint.Caption := sMess;
          if not StaticTextHint.Visible then StaticTextHint.Visible := True;
      end;
      StaticTextHint.Refresh;  //Obligatoire sinon superposition des caractères dans le TStatic ?
    end else
     StaticTextHint.Visible := False;
    end;
    Je ne comprends pourquoi lorsque je balaye à la souris une ligne de la StringGrid
    • de gauche à droite, la fluidité de la bulle est saccadée,
    • alors que si je balaye la même ligne de droite à gauche, la fluidité est "normale" (et ceci sans avoir lu une première fois la ligne de gauche à droite).
    Une explication ou une autre méthode ?

    Merci Gilles.
    Dernière modification par Invité ; 01/06/2011 à 15h36.

  2. #2
    Membre émérite Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Par défaut
    Citation Envoyé par selzig Voir le message
    Je ne comprends pourquoi lorsque je balaye à la souris une ligne de la StringGrid
    • de gauche à droite, la fluidité de la bulle est saccadée,
    • alors que si je balaye la même ligne de droite à gauche, la fluidité est "normale" (et ceci sans avoir lu une première fois la ligne de gauche à droite).

    Une explication ou une autre méthode ?
    Bonjour

    L'explication est simple: À moins de déplacer très lentement ton curseur vers la droite, il y a de fortes chances que ton curseur se trouve sur le TStaticText et la procédure StringGrid1.OnMouseMove n'est donc plus déclenchée. Ce n'est pas le cas lors d'un déplacement vers la gauche.

    Modifie les deux lignes de codes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       StaticTextHint.Left := X+16; //A cet emplacement pour assurer la fluidité
       StaticTextHint.Top  := Y+16; //de l'affichage
    Cela rend le déplacement tout à fait fluide.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci...

    Oui, oui. Cela fonctionne en effet. Je n'y avais pas pensé. J'avais bien observé que la pointe du curseur de la souris était toujours placée en haut à droite du TStaticText dans le "bon" cas et qu'elle "rippait" sur la ligne supérieure du TStaticText dans le mauvais.

    Par contre, j'ai un autre problème. Le MouseWheel semble être courtcircuité par la procédure MouseMove. Impossible de faire descendre ou monter l'affichage avec la roulette dans les cellules (colonnes) concernées par l'affichage du TSTtaticText... Pour les autres colonnes cela fonctionne normalement.

    Cordialement. Gilles

  4. #4
    Membre émérite Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Par défaut
    Citation Envoyé par selzig Voir le message
    Le MouseWheel semble être courtcircuité par la procédure MouseMove.
    Désolé, mais impossible pour moi de t'aider car je suis sur un portable et je n'ai pas de molette...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Rebonjour Pat,

    Cela fonctionne correctement maintenant. Le mauvais fonctionnement du MouseWheel était sans lien direct avec l'affichage du TStaticText.

    Encore merci. Cordialement.
    Gilles

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/11/2007, 12h31
  2. scrollbar sur cellule de tableau
    Par flydragon dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/05/2006, 11h05
  3. [CSS]probleme de style sur cellules dans une table
    Par luimême dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 17/01/2006, 12h13
  4. [VB.NET] Focus sur cellule de DataGrid
    Par daner06 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/05/2004, 21h12
  5. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48

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