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

 Delphi Discussion :

Coloration d'une TStringGrid


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 361
    Points : 123
    Points
    123
    Par défaut Coloration d'une TStringGrid
    bonjour,
    pour une application de gestion de comptes, j'ai besoin que la couleur de police soit rouge pour certaine ligne et noir pour d'autre, donc dans l'évênement Drawcell, je mets ce code :
    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
     
    procedure TForm2.recapDrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
      var
      s:string;
      x,y:integer;
    begin
     
                    with recap.Canvas do
                    begin
     
                            if ARow mod 2 = 0 then
                            begin
                                    brush.Color:=clWhite;
                                    recap.Font.Color:= clBlue;
                            end
                            else
                            begin
                                    brush.Color:=clLtGray;
                                    recap.Font.Color:= clred;
                            end;
     
     
                            recap.Canvas.TextRect(Rect,10,2,recap.Cells[ACol,Arow]);
                            s:=recap.Cells[ACol,Arow];
                            x:=12+Rect.Left;
                            y:=1+Rect.Top+(Rect.Bottom-Rect.Top-TextHeight(s))div 2;
                            TextOut(x,y,s);
                            Pen.Style:=psSolid;
                    end;
            end;
    Problème : le texte clignotte tt le temps.... comment éviter ca svp?

    Merci

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Est-ce que par hasard votre code ne ferait pas déborder la peinture d'une cellule sur une autre cellule ? Dans ce cas c'est ça qui pose problème car les cellules n'arrêtent pas de se demander d'être repeintes récursivement.

    Sinon vous pouvez aussi essayer la propriété DoubleBuffered pour voir.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  3. #3
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Je pense que le problème est ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    recap.Font.Color:= clBlue;
    Utilise plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    recap.Canvas.Font.Color:= clBlue;
    Dans ton code, tu modifies la font de la grille. Donc les paramètres d'affichage de la grille, ce qui fait que la grille se redessine continuellement en boucle.

    Si tu te contente de modifier la font du canvas, ça change uniquement les propriétés du dessin.

    Il est parfaitement possible de déborder et dessiner sur les cellules d'à côté. Ca ne provoque pas de dessin en boucle, c'est comme ça qu'on dessine des cellules fusionnées !

Discussions similaires

  1. Colorer une cellule précise d’une TStringGrid
    Par gilardino dans le forum Débuter
    Réponses: 1
    Dernier message: 16/04/2008, 12h10
  2. Récupérer les données interbase dans une TStringGrid
    Par Ousse dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/03/2005, 12h51
  3. Centrer le texte dans une TStringGrid
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/06/2004, 11h01
  4. coloration dans une RichEditbox
    Par BillBarouf dans le forum C++Builder
    Réponses: 3
    Dernier message: 01/03/2004, 19h59
  5. comment gerer une TStringGrid
    Par madison59 dans le forum C++Builder
    Réponses: 3
    Dernier message: 01/03/2004, 15h03

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