Ajout d'une image en fond d'un tstringgrid

Soyez le premier à donner votre avis sur cette source.

Vue 5 631 fois - Téléchargée 506 fois

Description

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.

Source / Exemple :


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:=0; For i:=FixedCols+1 To ACol Do Inc(x,ColWidths [i]);
      Y:=0; For 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;

Conclusion :


Cette source et quelques autres sur : http://nono40.developpez.com

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
136
Date d'inscription
lundi 2 septembre 2002
Statut
Membre
Dernière intervention
15 février 2006

hum^^
en effet ça marche donc bravo et merci =)
Messages postés
136
Date d'inscription
lundi 2 septembre 2002
Statut
Membre
Dernière intervention
15 février 2006

4 fois le même commentaire.. j'espère que le jeu en vaut la chandelle
Messages postés
5
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
23 avril 2003

Pour le moment je suis profane dans les commentaires du code source donc informez moi a temps.
merci
Messages postés
5
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
23 avril 2003

Pour le moment je suis profane dans les commentaires du code source donc informez moi a temps.
merci
Messages postés
5
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
23 avril 2003

Pour le moment je suis profane dans les commentaires du code source donc informez moi a temps.
merci
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.