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 :

[DBGrid]: Problèmes au rectangle de sélection.


Sujet :

Composants VCL Delphi

Mode arborescent

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 [DBGrid]: Problèmes au rectangle de sélection.
    J'ai trois problèmes avec le rectangle de sélection de l'enregistrement en cours du composant DBGrid:
    1- J'utilise la propriété
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    canvas.Brush.Style:=bsclear
    pour assurer la transparence du rectangle de sélection et laisser son contour visible néanmoins lorsque le DBGrid est activé (à la première exécution ou après perte de focus) le rectangle de sélection prend la couleur blanche; il revient transparent en pointant sur un autre enregistrement.
    2- en parcourant plusieurs enregistrements de la grille, l'affichage des données devient illisible (en utilisant la barre de défilement par exemple). (Voir l'image DBGRID1.png)
    En évitant d'utiliser la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    canvas.Brush.Style:=bsclear
    cet effet ne se produit pas.
    3-En sélectionnant la ligne i, ensuite la ligne i+1 et enfin n'importe quelle position, on remarque que le ligne supérieure de la ligne i+1 a obtenue la couleur du contour de sélection (Voir l'image DBGRID2.png). Ces couleur disparaissent si la grille perd le focus et se réactive (j'ai triché un peu en ajoutant DBGrid.Repaint dans les événements OnCellClic OnKeyUp) mais il y a surement mieux à faire.

    Voici le Code utilisé:
    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
    procedure TPrincipalForm.GridCarsDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      if gdSelected in State then  //la modification de l'apparence du rectangle de selection
      begin
         With TDBGrid(Sender) do
         begin
    		canvas.Pen.Width:=5;
    		canvas.Pen.Color:=clred;   
    		canvas.Brush.Style:=bsclear;   //le rectangle de selection devient transparent
     
    		TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state);
     
    	   // 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
      begin	//pour alterner les couleurs de la grille
             if TDBGrid(Sender).datasource.dataset.RecNo mod 2 =0 then
    			TDBGrid(Sender).Canvas.Brush.Color:=clwhite
             else
    			TDBGrid(Sender).Canvas.Brush.Color:=$00FDCCC1;
     
    			TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state);
       end;
    end;
    Images attachées Images attachées   

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

Discussions similaires

  1. Problème avec la multi-sélection dans une zone de liste
    Par Mimisio dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/07/2007, 16h23
  2. Problème de suppression de sélection
    Par cretindezalpes dans le forum Windows XP
    Réponses: 3
    Dernier message: 23/03/2007, 00h51
  3. Rectangle de sélection "bleuté" style Explorateur
    Par phplive dans le forum Langage
    Réponses: 2
    Dernier message: 02/03/2006, 15h22
  4. Rectangle de sélection
    Par duckaurore dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/01/2006, 16h43
  5. [Info]Rectangles de sélection : logiciel de dessin ?
    Par rozwel dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 27/03/2004, 17h49

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