IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Formatage et alignement de cellule dans un DBGrid


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Points : 67
    Points
    67
    Par défaut Formatage et alignement de cellule dans un DBGrid
    Bonjour,

    J'ai un DBGrid qui affiche dans une de ses colonnes des valeurs monétaires.
    123
    123,4
    123,45
    car Firebird ne conserve pas les zéros inutiles or je voudrais voir apparaitre :
    123,00
    123,40
    123,45
    J'ai donc fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TFRM_ConsultarVenda.DBGrid_ConsultarVendaDrawColumnCell(
      Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      if sameText(Column.FieldName,'TOTAL') then
      begin
        // on efface la cellule
        DBGrid_ConsultarVenda.Canvas.FillRect(Rect);
        DBGrid_ConsultarVenda.Canvas.TextRect(Rect,
                                              Rect.Left,
                                              Rect.Top,
                                              FRM_Fonctions.FormatDecimalNumber(Column.Field.AsString, 2, midDepois));
      end;
    end;
    Le problème est qu'avec Rect.Left, je perd mon alignement à droite.

    Quelqu'un a une idée ?

    Cyril.

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Points : 67
    Points
    67
    Par défaut
    Eureka, j'ai trouvé tout seul comme un grand !!

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    procedure TFRM_ConsultarVenda.DBGrid_ConsultarVendaDrawColumnCell(
      Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      if sameText(Column.FieldName,'TOTAL') then
      begin
        // on efface la cellule
        DBGrid_ConsultarVenda.Canvas.FillRect(Rect);
        SetTextAlign(DBGrid_ConsultarVenda.Canvas.Handle, TA_RIGHT);
        DBGrid_ConsultarVenda.Canvas.TextRect(Rect,
                                              Rect.Right-4,
                                              Rect.Top+2,
                                              FRM_Fonctions.FormatDecimalNumber(Column.Field.AsString, 2, midDepois));
        SetTextAlign(DBGrid_ConsultarVenda.Canvas.Handle, TA_LEFT);
      end;
    end;
    C'est bien, non ? Bon en vrai je l'ai pas trouvé vraiment tout seul... mais j'aurais pu si j'aurais voulu...
    Allez voir ici

    Cyril.

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut Cyril

    Sympa ta procédure !

    Mais il y a peut-être plus simple: Si tu utilises des champs persistants pour le DataSet lié au DBGrid, tu peux directement définir un format d'affichage au niveau du champs numérique depuis l'inspecteur d'objet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       DisplayFormat: ,#0.00
    @+ Claudius

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 84
    Points : 67
    Points
    67
    Par défaut
    Mais euh !

    Pourquoi tu me pètes mon délire, j'étais tout content de moi...
    regarde dans quel état tu m'as mis
    Si on ne peux même plus faire compliquer quand on peut faire simple, alors où va-t-on ?

    Cyril

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Cyril
    Je vais sauter !!!


    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. couleur de cellule dans un DBGRID
    Par tarmo57 dans le forum Débuter
    Réponses: 1
    Dernier message: 14/05/2013, 09h54
  2. Sélection d'une cellule dans un dbgrid
    Par LuckyLuke56 dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2009, 14h35
  3. Bloquer une cellule dans un DBGrid
    Par andreditdd dans le forum Composants VCL
    Réponses: 5
    Dernier message: 10/11/2008, 14h58
  4. Problème de coloration de cellules dans un DBGrid
    Par amaurylerouxdelens dans le forum Delphi
    Réponses: 7
    Dernier message: 08/11/2006, 13h47
  5. lire une cellule dans une DBGrid
    Par flo74 dans le forum Bases de données
    Réponses: 10
    Dernier message: 30/01/2006, 08h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo