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.
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.
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
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)
Re,
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
dans ce cas de figure il est facile de changer la couleur de fond en testant sur un champ normalement non null
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4SELECT UNEDATE,CHAMP1,CHAMP2,CHAMP3 FROM UNETABLE UNION SELECT DISTINCT UNEDATE,NULL,NULL,NULL FROM UNETABLE // groupage par date
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
Bonjour,
pour l'utilisation du ondrawcolumncell pour changer la couleur j'ai la mêthode
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
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;
salut
dans le ondrawCoLumCell
Pour tracer une trait horizontale
a toi de gerer la condition par ligne
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;
Blaise PascalNous 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.
PS : n'oubliez pas le tag
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager