IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Nono40.developpez.com
Le petit coin du web de Nono40
SOURCES TESTS DELPHI WIN32 AUTOMATISMES DELPHI .NET QUICK-REPORT
Retour à l'accueil
40 - METTRE UNE IMAGE EN FOND D'UN TSTRINGGRID

PRÉSENTATION : Mettre une image en fond d'un TStringGrid
ZIP : Téléchargez le zip APERÇUS :

NOTES : Cet exemple montre l'utilisation de l'évènement OnDrawCell d'un TStringGrid pour en changer le dessin.
Une image est ajoutée en fond, elle suit les déplacements des cellules en fonction des scrollbars. C'est à dire qu'une cellule est toujours située sur la même partie de l'image.
De plus l'utilisation de la fonction API DrawText permet de centrer le texte des cellules à la fois horizontalement et verticalement.

CODE :
Procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
Var i,x,y:Integer;
    R:TRect;
Begin
  With Sender As TStringGrid Do With Canvas Do
  Begin
    If gdFixed    In State
    Then Begin
      // Les cellules fixes sont toujours dessinées en gris
      Brush.Color := clBtnFace;
      Brush.Style := bsSolid;
      FillRect(Rect);
    End
    Else If gdSelected In State
    Then Begin
      // Les cellules sélectionnées sont en bleue
      Brush.Color := clNavy;
      Brush.Style := bsSolid;
      FillRect(Rect);
    End
    Else Begin
      // Recherche de la zone image à copier pour tenir compte des décalages
      // de la grille en fonction des barres de défilement.
      X:=0For i:=FixedCols+1 To ACol Do Inc(x,ColWidths [i]);
      Y:=0For i:=FixedRows+1 To ARow Do Inc(Y,RowHeights[i]);
      R.Left   :=X;
      R.Right  :=X+Rect.Right-Rect.Left;
      R.Top    :=Y;
      R.Bottom :=Y+Rect.Bottom-Rect.Top;
      // Dessin d'une partie de l'image
      CopyRect(Rect,BitMap.Canvas,R);
      Brush.Style := bsClear;
    End;
    // Sélection de la couleur de texte
         If gdSelected In State Then SetTextColor(Canvas.Handle,clRed)
    Else If gdFixed    In State Then SetTextColor(Canvas.Handle,clBlack)
    Else                             SetTextColor(Canvas.Handle,clWhite);
    // Dessin du texte en utilisant la fonction API
    DrawText(Canvas.Handle, PChar(Cells[ACol,ARow]), -1, Rect ,
           DT_CENTER Or DT_VCENTER Or DT_NOPREFIX Or DT_SINGLELINE);
  End;
End;

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Bruno Guérangé. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.