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 :

Redessiner une grille d'un TStringGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Points : 66
    Points
    66
    Par défaut Redessiner une grille d'un TStringGrid
    Bonjour à tous, je vais essayer d'expliquer clairement ma question.

    Je mets la valeur de Je veux redessiner la grille d'un TStringGrid comme si la valeur de En effet dans mon code j'ai fais un filtre qui me cache certaines lignes de la grille. Si la valeur de , mes lignes sont bien cachées mais sur la grille il m'affiche un amas de ligne grille d'ou j'ai mis le .

    J'ai essayer d'utiliser les fonctions du Canvas FillRect(Rect) , FrameRect(Rect), Polygon, mais je n'y arrive pas.

    Merci de votre aide.

    @ bientot.

  2. #2
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Salut,

    Je ne suis pas sur d'avoir bien compris.
    Tu cherches à redessiner les lignes lorsque GridLineWith = 0 ?

    Je pense alors que tu peux pratiquer comme suit :

    Dans ton OnDrawCell
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
    .....
    .....
     
    StringGrid1.Canvas.PenPos.X := Rect.Left;
    StringGrid1.Canvas.PenPos.Y := Rect.Bottom;
    // affecte la position initiale en bas à gauche de la case.
     
    StringGrid1.Canvas.LineTo(Rect.Right,Rect.Bottom);
    // trace la ligne jusqu'en bas à droite
    end;
    tu peux modifier le type d'affichage de la ligne en renseignant au paravent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    StringGrid1.Canvas.Pen.Color
    StringGrid1.Canvas.Pen.Width
    etc...
    J'espère que cela pourra t'aider.
    A+
    CV :
    - LinkedIn
    - Viadeo

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Points : 66
    Points
    66
    Par défaut
    Oui c'est ce que je veux faire.

    J'ai entré ton code mais il me met La partie gauche n'est pas affectable.

    Y a t il une autre soluce ??

    Merci encore

  4. #4
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Citation Envoyé par delphi5user
    Oui c'est ce que je veux faire.

    J'ai entré ton code mais il me met La partie gauche n'est pas affectable.

    Y a t il une autre soluce ??

    Merci encore
    Excuse moi mais je ne comprends le message d'erreur...
    Peux tu me dire sur quelle ligne il s'arrête ?
    CV :
    - LinkedIn
    - Viadeo

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Points : 66
    Points
    66
    Par défaut
    oui il s'arrete sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    StringGrid1.Canvas.PenPos.X := Rect.Left;
    StringGrid1.Canvas.PenPos.Y := Rect.Bottom;

  6. #6
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    toutes mes excuses...
    essaie plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    StringGrid1.Canvas.MoveTo(Rect.Left,Rect.Bottom);
    StringGrid1.Canvas.LineTo(Rect.Right,Rect.Bottom);
    CV :
    - LinkedIn
    - Viadeo

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Points : 66
    Points
    66
    Par défaut
    En fait rien ne se dessine à l'écran.

    J'ai essayé de jouer sur les valeurs de Rect mais je n'arrive pas à dessine le contour de la cellule. Ca me dessine de traits dans tous les sens.

    Excuse je suis un

  8. #8
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    En fait, dans l'exemple précédent, le tracage d'une cellule effacait la ligne de celle du dessus.

    Si c'est pour redessiner la case (rectangle) alors fait comme cela dans le OnDrawCell:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    StringGrid1.Canvas.Rectangle(Rect);
    CV :
    - LinkedIn
    - Viadeo

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Points : 66
    Points
    66
    Par défaut
    Merci !!!

    Ca marche !

    Juste un dernier point dès que je clique sur la cellule il efface une partie de la bordure.

    Faut il caser quelque part un 'Repaint' ?

    En fait ça affichait rien alors j'ai mis : et ça m'affiche bien le contour.

    Merci encore pour ton aide précieuse et ta disponibilité.

  10. #10
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    De rien.

    Le problème est résolu ... alors un petit tag résolu
    CV :
    - LinkedIn
    - Viadeo

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

Discussions similaires

  1. Tri rapide d'une grille (TStringGrid)
    Par Pierre Castelain dans le forum Codes sources à télécharger
    Réponses: 1
    Dernier message: 01/02/2013, 09h08
  2. Redessiner la grille dans un TStringGrid (bis et repetita)
    Par delphi5user dans le forum Composants VCL
    Réponses: 5
    Dernier message: 18/10/2004, 13h52
  3. : Adapter la taille d'une grille
    Par SteelBox dans le forum C++Builder
    Réponses: 3
    Dernier message: 31/07/2003, 07h08
  4. Désactiver la multi-sélection d'une grille
    Par Riko dans le forum Composants VCL
    Réponses: 6
    Dernier message: 17/06/2003, 09h47
  5. jaimerais savoir commen creer une grille.......
    Par zephyr dans le forum Flash
    Réponses: 5
    Dernier message: 29/04/2003, 12h14

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