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 :

contour d'un enregistrement dbgrid


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Par défaut contour d'un enregistrement dbgrid
    Bonjour,

    J'ai voulu reprendre ce code :
    Citation Envoyé par Rayek Voir le message
    Code non testé mais qui peut te donner des pistes pour ce que tu veux faire

    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
     
    procedure TFrm_MainForm.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
     
    begin
      if GdSelected in State then
      begin
         With TDBGrid(Sender) do
         begin
           Canvas.Pen.Color := clBlue;
     
           // trace la ligne du haut
           Canvas.MoveTo(Rect.TopLeft);
           Canvas.LineTo(Point(Rect.Right,Rect.Top));
     
           // trace la ligne du bas
           Canvas.MoveTo(Point(Rect.Left,Rect.Bottom));
           Canvas.LineTo(Point(Rect.Right,Rect.Top));
     
           // cas de la première cellule
           if DataCol = 0 then
           begin
             // on trace la coté gauche
             Canvas.MoveTo(Rect.TopLeft);
             Canvas.LineTo(Point(Rect.Left,Rect.Bottom));
           end;
     
           // Cas de la dernière colonne
           if DataCol = Columns.Count -1 then
           begin
             // On trace le coté droit
             Canvas.MoveTo(Point(Rect.Right,Rect.Top);
             Canvas.LineTo(Rect.BottomRight);
           end;
         end;
      end else
       TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state);
     
    end;
    Contrairement à ce que dit RedOran ce code est plein de faute:
    1. Les fonctions MoveTo et LineTo doivent s'argumenter avec deux paramètres
    2. Les paramètres doivent être de type entier et pas de type TPoint.


    J’ai essayé de faire les modifications nécessaire pour corriger ce code mais en vain. Je continue à rechercher.

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Par défaut
    J'ai réussis à corriger le code, mais l'affichage du contour est erroné lorsque les couleurs des lignes sont modifiées (la bordure supérieure devient invisible), sachant que j'utilise des couleurs altérnées.

    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
    procedure TFrm_MainForm.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
     
    begin
      if GdSelected in State then
      begin
         With TDBGrid(Sender) do
         begin
           Canvas.Pen.Color := clBlue;
     
           // trace la ligne du haut
           Canvas.MoveTo(Rect.Left,Rect.Top);
           Canvas.LineTo(Rect.Right,Rect.Top);
     
           // trace la ligne du bas
           Canvas.MoveTo(Rect.Left,Rect.Bottom);
           Canvas.LineTo(Rect.Right,Rect.Bottom);
     
           // cas de la première cellule
           if DataCol = 0 then
           begin
             // on trace la coté gauche
             Canvas.MoveTo(Rect.Left,Rect.Top);
             Canvas.LineTo(Rect.Left,Rect.Bottom);
           end;
     
           // Cas de la dernière colonne
           if DataCol = Columns.Count -1 then
           begin
             // On trace le coté droit
             Canvas.MoveTo(Rect.Right,Rect.Top);
             Canvas.LineTo(Rect.Right,Rect.Bottom);
           end;
         end;
      end else
       TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state);
     
    end;

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 52
    Par défaut
    Citation Envoyé par adelneo Voir le message
    J'ai réussis à corriger le code, mais l'affichage du contour est erroné lorsque les couleurs des lignes sont modifiées (la bordure supérieure devient invisible), sachant que j'utilise des couleurs altérnées.
    La ligne supérieure de contour ne se ferait-elle pas justement écraser la mise en couleur des lignes ? il me semble me souvenir que le focus sur la nouvelle ligne est dessiné avant que la ligne sélectionnée précédente ne soit redessinée, un moyen simple de s'en rendre compte serait de sélectionner une ligne qui ne soit pas concomitante.

    Ce qui voudrait dire qu'il faudrait retarder le dessin de ton contour ... mais au débotté, comme ça, je ne vois pas de solution élégante

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Edition enregistrement DBGrid
    Par exyacc dans le forum Composants VCL
    Réponses: 1
    Dernier message: 22/10/2014, 10h30
  2. DBGrid récupérer les valeurs de l'enregistrement courant
    Par bob_sapp dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/09/2014, 07h56
  3. contour d'un enregistrement dbgrid
    Par redoran dans le forum Composants VCL
    Réponses: 5
    Dernier message: 12/08/2010, 14h40
  4. colorier l'enregistrement dbGrid
    Par quedudev dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/09/2007, 17h42
  5. Enregistrer DBGrid dans un fichier excel ou xml ou autre
    Par Ice-tea dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/08/2006, 12h42

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