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 :

ligne séparatrice dans dbgrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 954
    Par défaut ligne séparatrice dans dbgrid
    Bonjour à tous,

    J'ai une table contenant une liste de produit avec leur prix achat classé par date, et j'utilise dbgrid pour les afficher et je voudrais créer une ligne séparatrice dans le dbgrid a chaque changement de date.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 739
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    le DBGrid classique n'a pas (à ma connaissance) de notion de groupage . Par contre certaines DBGrid dérivées (comme smdbGrid) permettent ce genre de chose très facilement.
    Mais encore un fois, sans connaitre la version de Delphi concerné ce conseil peut n'être qu'un coup d'épée dans l'eau !

  3. #3
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 708
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 708
    Par défaut
    Sinon, avec une DBGrid standard, il est aussi possible de définir la couleur du fond des lignes à chaque changement de date avec le OnDrawColumnCell.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 739
    Billets dans le blog
    65
    Par défaut
    Re,
    Citation Envoyé par Lung Voir le message
    Sinon, avec une DBGrid standard, il est aussi possible de définir la couleur du fond des lignes à chaque changement de date avec le OnDrawColumnCell.
    tout à fait d'accord, cependant pour faire la même chose qu'un groupage il faut travailler en amont, c'est à dire sur la source de données par exemple de la manière suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT UNEDATE,CHAMP1,CHAMP2,CHAMP3 FROM UNETABLE 
    UNION
    SELECT DISTINCT UNEDATE,NULL,NULL,NULL FROM UNETABLE   // groupage par date
    dans ce cas de figure il est facile de changer la couleur de fond en testant sur un champ normalement non null
    le seul problème restant serait l'ordre (ici Date desc,Champ1 desc .....)

    Si avec peu de champs cela semble facile avec une requête complexe , d'un autre côté , dans une DBGrid on ne met généralement pas un grand nombre de colonnes

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 954
    Par défaut
    Bonjour,
    pour l'utilisation du ondrawcolumncell pour changer la couleur j'ai la mêthode
    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
     
    procedure TForm1.dbgDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      If gdSelected In State Then
      Begin
     
        TDBGrid(Sender).canvas.Brush.color := clblue;
      End
      Else
      Begin
        IF si = true then  ///si est une variable
          TDBGrid(Sender).canvas.Brush.color := clLime
        Else
          TDBGrid(Sender).canvas.Brush.color := clWhite;
      End;
     
      TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
     
    end;
    par contre ce que je veut faire c'est séparer un nombre d'enregistrement par un espace(vide) lors du défilement des enregistrements

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 498
    Par défaut
    salut

    dans le ondrawCoLumCell

    Pour tracer une trait horizontale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      (sender as Tdbgrid).Canvas.MoveTo(Rect.Right, Rect.Bottom);
      (sender as Tdbgrid).Canvas.LineTo(Rect.Left-1, Rect.Bottom); // drawing bottom edge
      (sender as Tdbgrid).Canvas.Pen.Color :=clBtnHighLight;
      (sender as Tdbgrid).Canvas.MoveTo(Rect.Right-1, Rect.Bottom +1);
      (sender as Tdbgrid).Canvas.LineTo(Rect.Left +1, Rect.Bottom +1); // drawing bottom edge
      (sender as Tdbgrid).Canvas.Pen.Color := clBlack;
    a toi de gerer la condition par ligne

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 739
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Citation Envoyé par chekkal Voir le message
    ce que je veux faire c'est séparer un nombre d'enregistrement par un espace(vide) lors du défilement des enregistrements
    je réitère mon post n° 2

    le IF si = true then ///si est une variable devient IF (sender as Tdbgrid).Dataset.FieldByName('CHAMP1').isnull then

Discussions similaires

  1. Ligne séparatrice dans liste déroulante
    Par totti11 dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 22/07/2013, 14h35
  2. comment accéder a une ligne dans DBGrid
    Par Invité(e) dans le forum C++Builder
    Réponses: 1
    Dernier message: 03/05/2008, 12h48
  3. Réponses: 6
    Dernier message: 01/10/2007, 13h29
  4. ligne sélectionnée dans une dbGrid
    Par RBIK dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/07/2004, 18h13
  5. Couleur des lignes dans DBGrid
    Par eddie dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/06/2002, 19h15

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