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 :

TStringGrid : comment changer la couleur et l'épaisseur des bordures des cellules ?


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut TStringGrid : comment changer la couleur et l'épaisseur des bordures des cellules ?
    Bonjour,

    Je suis à la recherche de la méthode permettant de changer la couleur et l'épaisseur de la bordure des cellules de la TStringGrid.

    Merci pour votre aide,
    ZiP

  2. #2
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour,

    J'ai changé ma TStringGrid par une TDrawGrid.

    BorderStyle = bsNone
    ColCount = 9
    DefaultColWidth = 50
    DefaultDrawing = False
    DefaultRowHeight = 50
    FixedCols = 0
    FixedRows = 0
    Height = 450
    Options = tout est décoché
    RowCount = 9
    ScrollBars = ssNone
    Width = 450

    J'utilise le code suivant :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
         DrawGrid1.Canvas.Pen.Color := clBlack;
     
         DrawGrid1.Canvas.MoveTo(Rect.Left, Rect.Top);
         DrawGrid1.Canvas.LineTo(Rect.Left, Rect.Bottom);
     
         DrawGrid1.Canvas.MoveTo(Rect.Left, Rect.Top);
         DrawGrid1.Canvas.LineTo(Rect.Right, Rect.Top);
     
         if (ACol = 8) then
         begin
              DrawGrid1.Canvas.MoveTo(Rect.Right-1, Rect.Top);
              DrawGrid1.Canvas.LineTo(Rect.Right-1, Rect.Bottom);
         end;
     
         if (ARow = 8) then
         begin
              DrawGrid1.Canvas.MoveTo(Rect.Left, Rect.Bottom-1);
              DrawGrid1.Canvas.LineTo(Rect.Right, Rect.Bottom-1);
         end;
     
         if (ACol = 2) or (ACol = 5) then
         begin
              DrawGrid1.Canvas.MoveTo(Rect.Right-1, Rect.Top);
              DrawGrid1.Canvas.LineTo(Rect.Right-1, Rect.Bottom);
              DrawGrid1.Canvas.MoveTo(Rect.Right+1, Rect.Top);
              DrawGrid1.Canvas.LineTo(Rect.Right+1, Rect.Bottom);
         end;
     
         if (ARow = 3) or (ARow = 6) then
         begin
              DrawGrid1.Canvas.MoveTo(Rect.Left, Rect.Top-1);
              DrawGrid1.Canvas.LineTo(Rect.Right, Rect.Top-1);
              DrawGrid1.Canvas.MoveTo(Rect.Left, Rect.Top+1);
              DrawGrid1.Canvas.LineTo(Rect.Right, Rect.Top+1);
         end;
    end;
    De cette manière, j'ai une belle grille de Sudoku

    Est-ce que ma méthode de dessin est correcte ?

    Est-il possible de l'optimiser un peu ?

    Merci,
    ZiP

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Le StringGrid contient le même événement

    Ce qu'on peut dire d'un coup d'oeil est que tes lignes épaisses ne seront pas bien rafraîchies à la sortie de la cellule puisque tu "piles" sur les cellules avoisinantes (+1, -1)

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/07/2005, 10h45
  2. Réponses: 7
    Dernier message: 28/06/2005, 11h53
  3. [phpBB] Comment changer les couleurs
    Par ludolecho dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 19/05/2005, 08h20
  4. comment changer la couleur du crayon?
    Par meli0207 dans le forum MFC
    Réponses: 10
    Dernier message: 07/05/2005, 10h41
  5. Réponses: 2
    Dernier message: 01/12/2004, 22h48

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