DisplayFormat DBGrid [Résolu]

Messages postés
119
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
17 février 2019
- - Dernière réponse : cs_eli42
Messages postés
119
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
17 février 2019
- 6 juil. 2009 à 14:00
Bonjour,
Je voudrais Formater 2 Colonnes Float dans un DBGrid, colunns[0] en ####-##-##### et colunns[5] en #.##, mes Champs ne sont pas Persistent, donc pas accés à DisplayFormat dans l'nspecteur d'objet,donc j'ai Tapé :
DBGrid1.Columns[0].FieldName :=
QUERY.FieldValues['CHAMP1'].DisplayFormat('#####-##-#####');
DBGrid1.Columns[5].FieldName :=
QUERY.FieldValues['CHAMP1'].DisplayFormat('#.##');

Mais à chaque fois j'ai "Opération de Variant Incorrecte"

Bonne Prog à tous (tes)

*Nota j'ai testé la solution de Loulibier : http://www.delphifr.com/forum/sujet-FORMATER-CHAMPS-TDBGRID_316176.aspx pas mieux
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
119
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
17 février 2019
3
Merci
Oups désolé pour la mise en page de daube que je viens de poster

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 114 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_eli42
Messages postés
308
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
17 septembre 2013
2
3
Merci
bonsoir,

il faut peut-être essayer le traitement dans l'évènement DBGrid1DrawColumnCell du dbgrid.

procedure TForm4.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if DataCol = 0 then
  begin
   
  end;
end;

Luc.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 114 internautes nous ont dit merci ce mois-ci

Commenter la réponse de beckerich
Messages postés
308
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
17 septembre 2013
2
3
Merci
oups trop vite :

procedure TForm4.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if DataCol = 0 then
  begin
    DBGrid1.Canvas.Font.Name := 'Tunga';

  end;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 114 internautes nous ont dit merci ce mois-ci

Commenter la réponse de beckerich
Messages postés
308
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
17 septembre 2013
2
3
Merci
tu dois gérer toi-même les alignements (SetTextAlign(DBGrid.Canvas.Handle, TA_RIGHT))

ou utiliser DrawText...
Courage, tu es sur la bonne voie.
Luc.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 114 internautes nous ont dit merci ce mois-ci

Commenter la réponse de beckerich
Messages postés
119
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
17 février 2019
3
Merci
J'ai fait un mix de Beckerich et de Loulibier : http://www.delphifr.com/forum/sujet-FORMATER-CHAMPS-TDBGRID_316176.aspx

Procedure TFiche.DBGListeDrawColumnCell(Sender: TObject; Const Rect: TRect;
DataCol: Integer; Column: TXColumn; State: TGridDrawState);
Begin
If DataCol = 0 Then
Begin
DBGListe.Canvas.TextRect(Rect, Rect.Left, Rect.Top,
FormatFloat('####-##-#####', DM.T_BL.Fieldbyname('NFICHE').AsFloat));
End;
If DataCol = 5 Then
Begin
DBGListe.Canvas.TextRect(Rect, Rect.Left, Rect.Top,
FormatFloat('0.00', DM.T_BL.Fieldbyname('TOTAL').AsFloat));
End;
End;

Ca fonctionne par contre pour ma colonne 5 qui FLOAT j'ai un Alignement a gauche malgre :
DBGLISTE.Columns[5].Alignment := taRightJustify;

Voila ca avance doucement mais surement

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 114 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_eli42
Messages postés
119
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
17 février 2019
3
Merci
Bon voila pour finir, j'ai exactement ce que je voulais :

Procedure TForm1.DBGListeDrawColumnCell(Sender: TObject; Const Rect: TRect;
DataCol: Integer; Column: TXColumn; State: TGridDrawState);
Var
LargEcrit: Integer;
Begin
Try
If DataCol = 0 Then
Begin
LargEcrit := DBGListe.Canvas.Textwidth(FormatFloat('####-##-#####',
Table.Fieldbyname('NFICHE').AsFloat));
DBGListe.Canvas.TextRect(Rect, Rect.Right - LargEcrit - 2, Rect.Top + 2,
FormatFloat('####-##-#####', Table.Fieldbyname('NFICHE').AsFloat));
End;
If DataCol = 5 Then
Begin
LargEcrit := DBGListe.Canvas.Textwidth(FormatFloat('0.00',
Table.Fieldbyname('TOTAL').AsFloat));
DBGListe.Canvas.TextRect(Rect, Rect.Right - LargEcrit - 2, Rect.Top + 2,
FormatFloat('0.00', Table.Fieldbyname('TOTAL').AsFloat));
End;
Except
exit;
End;
End;

Bonne Prog a tous, et merci a Beckerich et de Loulibier, ded m'avoir mis sur le bon chemin

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 114 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_eli42
Messages postés
119
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
17 février 2019
0
Merci
J'ai fait un mix de Beckerich et de Loulibier : http://www.delphifr.com/forum/sujet-FORMATER-CHAMPS-TDBGRID_316176.aspx

Procedure TFiche.DBGListeDrawColumnCell(Sender: TObject; Const Rect: TRect;
DataCol: Integer; Column: TXColumn; State: TGridDrawState);
Begin
If DataCol = 0 Then
Begin
DBGListe.Canvas.TextRect(Rect, Rect.Left, Rect.Top,
FormatFloat('####-##-#####', DM.T_BL.Fieldbyname('NFICHE').AsFloat));
End;
If DataCol = 5 Then
Begin
DBGListe.Canvas.TextRect(Rect, Rect.Left, Rect.Top,
FormatFloat('0.00', DM.T_BL.Fieldbyname('TOTAL').AsFloat));
End;
End;

Ca fonctionne par contre pour ma colonne 5 qui FLOAT j'ai un Alignement a gauche malgre : DBGLISTE.Columns[5].Alignment := taRightJustify;

Voila ca avance doucement mais surement
Commenter la réponse de cs_eli42
Messages postés
119
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
17 février 2019
0
Merci
???? c'est quoi cete mise en page ????
Commenter la réponse de cs_eli42

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.