DisplayFormat DBGrid [Résolu]

Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 2019
- - Dernière réponse : cs_eli42
Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 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 

8 réponses

Meilleure réponse
Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 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 120 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
Statut
Membre
Dernière intervention
17 septembre 2013
1
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 120 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
Statut
Membre
Dernière intervention
17 septembre 2013
1
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 120 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
Statut
Membre
Dernière intervention
17 septembre 2013
1
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 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de beckerich
Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 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 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_eli42
Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 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 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_eli42
Messages postés
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 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
133
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
21 juillet 2019
0
Merci
???? c'est quoi cete mise en page ????
Commenter la réponse de cs_eli42