DisplayFormat DBGrid [Résolu]

Messages postés
116
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
30 juillet 2018
- 3 juil. 2009 à 21:56 - Dernière réponse :
Messages postés
116
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
30 juillet 2018
- 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
116
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
30 juillet 2018
- 3 juil. 2009 à 21:58
3
Merci
Oups désolé pour la mise en page de daube que je viens de poster

Merci cs_eli42 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_eli42
Meilleure réponse
Messages postés
308
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
17 septembre 2013
- 3 juil. 2009 à 23:51
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.

Merci beckerich 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de beckerich
Meilleure réponse
Messages postés
308
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
17 septembre 2013
- 3 juil. 2009 à 23:54
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;

Merci beckerich 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de beckerich
Meilleure réponse
Messages postés
308
Date d'inscription
jeudi 29 septembre 2005
Dernière intervention
17 septembre 2013
- 4 juil. 2009 à 01:18
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.

Merci beckerich 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de beckerich
Meilleure réponse
Messages postés
116
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
30 juillet 2018
- 4 juil. 2009 à 01:20
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

Merci cs_eli42 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_eli42
Meilleure réponse
Messages postés
116
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
30 juillet 2018
- 6 juil. 2009 à 14:00
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

Merci cs_eli42 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de cs_eli42
Messages postés
116
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
30 juillet 2018
- 4 juil. 2009 à 01:16
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
116
Date d'inscription
mardi 24 décembre 2002
Dernière intervention
30 juillet 2018
- 4 juil. 2009 à 01:17
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.