Formater les champs d'un TDBGrid [Résolu]

Messages postés
8
Date d'inscription
lundi 9 février 2004
Dernière intervention
8 avril 2005
- 19 oct. 2004 à 14:35 - Dernière réponse :
Messages postés
8
Date d'inscription
lundi 9 février 2004
Dernière intervention
8 avril 2005
- 20 oct. 2004 à 14:12
Bonjour,

Mon problème est le suivant :

J'ai un TDBGrid relié à un query, quand j'ouvre le query les données s'affichent, pas de souci.
Je voudrais en fait formater le dernier de mes champs, qui représente un nombre, en séparant les milliers, de la forme ###.###.###,##

J'ai reussi à le faire dans un StringGrid, grace un précedent post, en utilisant le OnDrawCell, mais je ne suis pas parvenu a reproduire ça sur le TDBGrid.

merci de m'aiguiller :)

Cylc
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
31
Date d'inscription
lundi 27 janvier 2003
Dernière intervention
10 mars 2009
- 20 oct. 2004 à 13:12
3
Merci
Salut,

pour pouvoir trouver la propriété DISPLAYFORMAT, tu fais un double click sur ton query, la fenêtre d'éditeur de champ doit apparaitre.
Si cette dernière est vide, fais un clic droit dessus et "Ajouter tous les champs".

Ensuite tu n'as qu'à te positionner sur le champ souhaité et tu auras accès à ses différentes propriétés, y compris "DisplayLabel"

Bonne prog à toi.

Merci Wriggles 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Wriggles
Messages postés
112
Date d'inscription
jeudi 7 octobre 2004
Dernière intervention
19 février 2009
- 19 oct. 2004 à 17:28
0
Merci
Si tu as des champs persistent tu peux appliquer ton format dans la propriété DisplayFormat (il existe pour les float, currency)
Commenter la réponse de cs_MHI
Messages postés
323
Date d'inscription
jeudi 6 juin 2002
Dernière intervention
24 septembre 2008
- 20 oct. 2004 à 00:29
0
Merci
salut cylc,

as-tu essayé cette méthode :
  ThousandSeparator := ',';
  DBGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, FormatFloat('###.###.###,#####', Field.AsFloat));


ça reste à peut près la même méthode que sur ton dernier post.
Il faut bien sure intégrer des testes sur le fait que ton Field sois ou non un réel.

Bonne Prog, ;)

Olivier

PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
Commenter la réponse de Loulibier
Messages postés
8
Date d'inscription
lundi 9 février 2004
Dernière intervention
8 avril 2005
- 20 oct. 2004 à 10:32
0
Merci
Ca me parait pas mal mais je suis débutant et je ne sais pas comment tester que je suis bien dans une colonne spécifique, ni dans quel evenement inclure ce code (j'ai essayé le DrawDataCell mais le programme passe jamais dedans)

Quand a la fonction DisplayFormat je ne sais carrement pas ou l'utiliser malgré qu'elle apparaisse dans l'aide.

Merci pour vos réponse en tout cas
Commenter la réponse de Cylc
Messages postés
323
Date d'inscription
jeudi 6 juin 2002
Dernière intervention
24 septembre 2008
- 20 oct. 2004 à 12:06
0
Merci
Il faut l'intégrer dans le OnDrawCell de ton composant TDBGrid
procedure TWndMain.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
try
  DBGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2,     FormatFloat('###.###.###,#####', Field.AsFloat));
except
DBGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2,     Field.AsString);
end;
end;


il te suffit d'initialisé qu'une seule fois le séparteur des milliers.
  ThousandSeparator := ',';


Bonne Prog, ;)

Olivier

PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
Commenter la réponse de Loulibier
Messages postés
8
Date d'inscription
lundi 9 février 2004
Dernière intervention
8 avril 2005
- 20 oct. 2004 à 13:07
0
Merci
Comme je disais, j'ai essayé le DrawDataCell mais je n'arrive pas à passer dans la procédure pendant l'execution

J'ouvre le query, ca affiche automatiquement les données de la tables dans mon DBGrid, jamais on passe dans le DrawDataCell, je ne peux donc pas séparer les milliers du 5eme champs
Commenter la réponse de Cylc
Messages postés
8
Date d'inscription
lundi 9 février 2004
Dernière intervention
8 avril 2005
- 20 oct. 2004 à 14:12
0
Merci
Merci beaucoup de vos réponses, le DisplayFormat arrange effectivement mes bidons :)
Commenter la réponse de Cylc

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.