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

Langage Delphi Discussion :

StringGrid Indice hors limite


Sujet :

Langage Delphi

  1. #1
    Inactif  
    Inscrit en
    Février 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 97
    Points : 53
    Points
    53
    Par défaut StringGrid Indice hors limite
    Bonjour - Je n'ai pas trouvé comment résoudre un message d'erreur lorsque je suis sur une fenêtre avec un StringGrid :
    - si je veux me déplacer vers le bas dans la fenêtre à l'aide de la molette de la souris j'ai le message "indice de grille hors limite"
    - à l'aide des boutons "ascenseur" je n'ai pas ce problème et je peux faire défiler.

    Où est le problème ? - MERCI -

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 534
    Points : 25 082
    Points
    25 082
    Par défaut
    la Molette change l'item sélectionné, il me semble ? voir OnSelectCell
    Le Scroll via "ascenseur", ne doit le changer !

    As-tu un gestionnaire d'évènement associé à OnMouseWheel... ?
    Fais-tu un accès au Rows, Cols ou Cells ? as-tu limite à RowCount-1 et ColCount-1 dans toutes tes boucles ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Inactif  
    Inscrit en
    Février 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 97
    Points : 53
    Points
    53
    Par défaut
    Mon problème venait de l'introduction de ce code mal placé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Var Selec  : TGridRect;
    ...
      Selec.Top := 0;
      Selec.Bottom := 0;
      Selec.Left := StringGrid1.ColCount;
      Selec.Right := Selec.Left;
      StringGrid1.Selection := Selec;
    Ce code sert en fait à masquer la sélection bleue gênante.

    Du reste y-a-t-il un moyen d'éclaircir cette couleur qui masque mon texte (noir) si la cellule est sélectionnée....

    Ce qu'il y avait de curieux c'est que le bug n'intervenait qu'AVEC la MOLETTE souris (sans utilisation de onmouse ....)alors que le clic sur les ascenseurs (Haut et bas) fonctionnait!

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 534
    Points : 25 082
    Points
    25 082
    Par défaut
    Normalement, la couleur du texte change, passe au blanc lors de la sélection d'une cellule
    as-tu fait ton propre OnDraw ?

    Ensuite, il y a des Options dans la TStringGrid, essaye d'ajouter goDrawFocusSelected et de retirer goRangeSelect
    pour masquer la sélection, je crois que je mettais à -1 (ça passait, surement mieux que ColCount comme limite )
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Inactif  
    Inscrit en
    Février 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 97
    Points : 53
    Points
    53
    Par défaut
    Ensuite, il y a des Options dans la TStringGrid, essaye d'ajouter goDrawFocusSelected et de retirer goRangeSelect
    pour masquer la sélection
    Merci de t'occuper de mon cas !

    Je suis en Delphi 6.
    Dans propriétés de St-Grid je n'ai rien de spécial et surtout je ne comprends pas comment "ajouter" une option ...
    Suis-je ignare ...!

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 534
    Points : 25 082
    Points
    25 082
    Par défaut
    Oui ! Tu l'es !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StringGrid1.Options := StringGrid1.Options + [goDrawFocusSelected] - [goRangeSelect];
    Tu peux aussi le faire via l'inspecteur d'objet !

    Exclude\Include pour les ensembles
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Inactif  
    Inscrit en
    Février 2004
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 97
    Points : 53
    Points
    53
    Par défaut
    Effectivement je n'avais pas vu la kyrielle d'options (non expliquées -documentées - dans l'aide F1 de l'inspecteur) de l'inspecteur d'objet.

    J'ai fait les transformations proposées (false/true) pas vu de changement. Zarbi.

    Je note résolu car je n'ai plus le message d'erreur (indice).

    Mais résolu "à moitié" car le pavé bleu foncé persistant demeure.
    En fait c'est juste une question de visibilité (écriture noire sur fond bleu foncé de la cellule sélectionnée) ... apparemment il y a d'autres ignares puisque je n'ai pas trouvé la réponse sur le moteur de recherche au nom bien connu !

  8. #8
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut

    Pour masquer la sélection bleue, il te suffit de modifier l'évenement OnDrawCell :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
      StringGrid1.Canvas.Font.Color:=clBlack;
      if (ACol>=StringGrid1.FixedCols) and (ARow>=StringGrid1.FixedRows) then
        StringGrid1.Canvas.Brush.Color:=clWhite;
      StringGrid1.Canvas.TextRect(Rect,0,0,StringGrid1.cells[ACol,ARow]);
    end;
    Bonne chance

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

Discussions similaires

  1. Erreur indice hors limite outil R
    Par Gloria_Im dans le forum R
    Réponses: 3
    Dernier message: 15/02/2013, 12h07
  2. erreur indice hors limites
    Par ryma87rh dans le forum C++
    Réponses: 9
    Dernier message: 19/03/2009, 08h55
  3. Indice hors limite(0)
    Par Morfus dans le forum Langage
    Réponses: 17
    Dernier message: 11/09/2008, 10h42
  4. [TListBox] Problème "Indice hors limite (-1)"
    Par renorx dans le forum Composants VCL
    Réponses: 16
    Dernier message: 08/12/2005, 17h47
  5. Erreur "indice hors limite(0)" non comprise
    Par Bruno1905 dans le forum Bases de données
    Réponses: 9
    Dernier message: 10/06/2005, 12h02

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