Formater les champs d'un TDBGrid

Résolu
Cylc Messages postés 8 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 8 avril 2005 - 19 oct. 2004 à 14:35
Cylc Messages postés 8 Date d'inscription lundi 9 février 2004 Statut Membre 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

7 réponses

Wriggles Messages postés 31 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 mars 2009
20 oct. 2004 à 13:12
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.
3
cs_MHI Messages postés 110 Date d'inscription jeudi 7 octobre 2004 Statut Membre Dernière intervention 19 février 2009 1
19 oct. 2004 à 17:28
Si tu as des champs persistent tu peux appliquer ton format dans la propriété DisplayFormat (il existe pour les float, currency)
0
Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
20 oct. 2004 à 00:29
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.
0
Cylc Messages postés 8 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 8 avril 2005
20 oct. 2004 à 10:32
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
20 oct. 2004 à 12:06
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.
0
Cylc Messages postés 8 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 8 avril 2005
20 oct. 2004 à 13:07
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
0
Cylc Messages postés 8 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 8 avril 2005
20 oct. 2004 à 14:12
Merci beaucoup de vos réponses, le DisplayFormat arrange effectivement mes bidons :)
0
Rejoignez-nous