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 régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    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 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    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 !
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    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 664
    Points : 6 967
    Points
    6 967
    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. ___ É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.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    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 422
    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 422
    Points : 5 822
    Points
    5 822
    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
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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, 13h35
  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, 11h48
  3. Réponses: 6
    Dernier message: 01/10/2007, 12h29
  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, 17h13
  5. Couleur des lignes dans DBGrid
    Par eddie dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/06/2002, 18h15

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