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 :

[Algnement dans StringGrid] Voici la Bonne Solution


Sujet :

Composants VCL Delphi

  1. #1
    Membre actif Avatar de touhami
    Inscrit en
    Avril 2002
    Messages
    327
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 327
    Points : 264
    Points
    264
    Par défaut [Algnement dans StringGrid] Voici la Bonne Solution
    Bonjour a tous,
    apres avoir chercher sur Internet Voila j'ai trouvé ce morceau de code qui marche tres bien.
    http://membres.lycos.fr/delphi/Exemple.html
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    procedure TfPrinc.cStringGridDrawCell(Sender: TObject; Col, Row: Integer;
      Rect: TRect; State: TGridDrawState);
    var
       Decale : Integer;
    begin
         with cStringGrid.Canvas do begin
            {-------- Choisit les couleurs --------}
            if Row= 0 then begin
               Brush.Color:= clBtnFace; // Couleur du fond
               Font.Style:= [];         // Style du caractère
               Font.Color:= clBlack;    // Couleur du caractère
            end else begin
              case Col of
                 0: begin
                    Brush.Color:= clYellow;
                    Font.Style:= [];
                    Font.Color:= clBlack;
                 end;
                 1: begin
                    Brush.Color:= clWindow;
                    Font.Style:= [];
                    Font.Color:= clBlack;
                 end;
                 2: begin
                    Brush.Color:= clBlue;
                    Font.Style:= [];
                    Font.Color:= clWhite;
                 end;
                 3: begin
                    Brush.Color:= clTeal;
                    Font.Style:= [];
                    Font.Color:= clWhite;
                 end;
                 4: begin
                    Brush.Color:= clRed;
                    Font.Style:= [fsBold];
                    Font.Color:= clYellow;
                 end;
              end;
            end;
     
            {-------- Si cette case est en sélection --------}
            if (gdSelected in State) then begin
               Brush.Color:= clHighlight;
               Font.Style:= [fsBold];
               Font.Color:= clHighlightText;
            end;
     
            {-------- Choisit l'alignement --------}
            FillRect(Rect);
            Decale:= (cStringGrid.ColWidths[Col] - TextWidth(cStringGrid.Cells[Col,Row])) div 2;
            if (Row = 0) or (Col = 4) then
               TextOut(Rect.Left + Decale, Rect.Top + 4, cStringGrid.Cells[Col, Row]) // Centrer
            else if Col in [2,3] then
               TextOut(Rect.Left + ((Decale * 2)- 2), Rect.Top + 4, cStringGrid.Cells[Col,Row]) // A droite
            else
               TextOut(Rect.Left + 2 , Rect.Top + 4, cStringGrid.Cells[col,Row]); // A Gauche
         end;
     
    {------------------------------------------------------------------------------}
    { OnDrawCell est appeler à chaque fois qu'il faut dessine une case             }
    {------------------------------------------------------------------------------}
    { Col représente la colonne de la case à dessine                               }
    { Row représente la ligne de la case à dessine                                 }
    { Rect contient les valeurs nous permetant de dessiner au bon endroit          }
    { State nous indique si cette case est "Selected", "Focused" ou "Fixed"        }
    {------------------------------------------------------------------------------}
     
    end;
    Il marche tres bien.
    Bon developpement pour tous.

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Ce code peut être amélioré au moment où le texte est dessiné...
    En s'inspirant de la ici, c'est plus simple d'utiliser l'API DrawText qui permet de faire des centrages directement (DT_CENTER, DT_CENTER, etc.)
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

Discussions similaires

  1. [JAR]Bonne solution ?
    Par Baptiste Wicht dans le forum Eclipse Java
    Réponses: 10
    Dernier message: 30/01/2006, 13h08
  2. Réponses: 9
    Dernier message: 12/09/2005, 13h24
  3. [Débutant] Bonne solution ?
    Par Machjaghjolu dans le forum Débuter
    Réponses: 23
    Dernier message: 17/09/2004, 09h51
  4. couleur dans StringGrid
    Par amrock dans le forum C++Builder
    Réponses: 1
    Dernier message: 06/09/2004, 11h57
  5. Options dans StringGrid
    Par AnneOlga dans le forum C++Builder
    Réponses: 5
    Dernier message: 25/03/2004, 14h17

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