begin process at 2010 03 22 11:07:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > AJOUT D'UNE IMAGE EN FOND D'UN TSTRINGGRID

AJOUT D'UNE IMAGE EN FOND D'UN TSTRINGGRID


 Information sur la source

Note :
Aucune note
Catégorie :Graphique Niveau :Initié Date de création :03/03/2003 Date de mise à jour :03/05/2003 02:20:48 Vu / téléchargé :3 757 / 332

Auteur : Nono40

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 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

  • 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;
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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec une capture TAUX D'OCCUPATION DU PROCESSEUR
Source avec Zip SYNCHRONISER DEUX LISTBOX
Source avec Zip Source avec une capture SUPPRIMER LE SCINTILLEMENT AVEC DOUBLEBUFFERED
SETFOCUS SUR UN BOUTON D'UN RADIOGROUP
Source avec Zip DESSINER DANS LE SYSTRAY AVEC CREATEICON

 Sources de la même categorie

Source avec Zip Source avec une capture PCB DESIGN LOGICIEL DE CRÉATION DE CIRCUIT IMPRIMÉ ET ACCESS... par jfs59
Source avec Zip Source avec une capture EFFET VITRE ET THUMBNAILS SOUS VISTA par Bacterius
Source avec Zip Source avec une capture ANAGLYPHEUR OU COMMENT VOIR EN RELIEF LES STÉRÉOSCOPES ANCES... par jfs59
Source avec Zip Source avec une capture DÉFORMER UNE IMAGE AUX DIMENSIONS D'UN QUADRANGLE QUELCONQUE... par FFCAST
Source avec Zip Source avec une capture THREAD ET BITMAP (DESSIN AU CRAYON) par barbichette

Commentaires et avis

Commentaire de lembert le 23/04/2003 17:13:53

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

Commentaire de lembert le 23/04/2003 17:14:08

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

Commentaire de lembert le 23/04/2003 17:14:18

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

Commentaire de lembert le 23/04/2003 18:02:46

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

Commentaire de costello le 30/06/2003 22:34:17

4 fois le même commentaire.. j'espère que le jeu en vaut la chandelle

Commentaire de costello le 30/06/2003 22:37:14

hum^^
en effet ça marche donc bravo et merci =)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales