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 :

DBGrid: formatage de l'affichage d'une colonne


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 11
    Points : 8
    Points
    8
    Par défaut DBGrid: formatage de l'affichage d'une colonne
    Je programme sous Delphi 6.

    Je désire pouvoir ouvrir des BDD Access dont les tables et les champs sont à priori inconnus avant l'ouverture.

    Sur une feuille je place DataSource, Table, Database, DBGrid.

    Après choix d'une BDD je récupère les tables qui y sont présentes.

    Après choix d'une table, j'affecte les noms de la BDD et de la table aux propriétés adhoc des composants Database et Table et je termine en activant les deux. Le contenu de la table s'affiche dans DBGrid.

    Mais je voudrais que les données de type ftFloat s'affichent formatées dans DBGrid: uniquement les 2 premères décimales après la virgule.

    Si je connaissais par avance la structure de la BDD je pourrais par un clic droit sur le composant Table choisir 'Fields Editor', Ajouter les champs de la table et pour les champs appropriés éditer la propriété 'DisplayFormat'.

    Mais par principe la structure de la BDD est inconnue et je n'arrive pas par code, à l'execution, accéder à cette propriétée pour lui donner la valeur voulue (#0.00).

    Merci de l'aide.

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2004
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Voilà le code, a placer idealement dans l'evenement AfterOpen de la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    var i :integer;
    begin
     
     for i := 0 to table.fields.count - 1 do
       if table.fields[i].FieldType in [ftFloat , ftCurrency]
                Then table.Fields[i].DisplayFormat := '#0.00';
     
    end;

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 11
    Points : 8
    Points
    8
    Par défaut DBGrid: formatage de l'affichage d'une colonne
    Merci DarkWinter pour ton aide et la rapidité de la réponse.

    En fait je n'avais pas compris que c'est dans l'évènement 'AfterOpen' qu'il fallait placer le code.

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 11
    Points : 8
    Points
    8
    Par défaut DBGrid: formatage de l'affichage d'une colonne
    DarkWinter ce code ne marche pas.
    En fait je l'avais déjà utilisé mais pas dans l'évènement 'AfterOpen'.

    Je suis un programmeur amateur, avec une certaine expérience, mais étant passé sous Delphi il y a qq mois je ne le maîtrise pas totalement.

    Cependant j'ai essayé de creuser un peu le problème sans aboutir pour l'instant au résultat recherché.

    est un TField et TField ne possède pas de propriété 'DisplayFormat'. Cette propriété n'est disponible que pour les descendants numériques de TField (TIntegerField, TFloatField etc...).

    Quand on connaît la structure de la BDD on implémente des champs persistants (clic droit sur le composant Table choisir 'Fields Editor', Ajouter les champs de la table qui sont donc les descendants de TField, et pour les champs appropriés éditer la propriété 'DisplayFormat').

    Mais quand la structure de la BDD est à priori inconnu on a à faire aux champs dynamiques.

    Et dans ce cas je ne sais pas par code instencier les descendants adhoc de TField et donc non plus à leur propriété DisplayFormat.

    Ma demande d'aide reste d'actualité. Merci d'avance.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2004
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Ok désolé je n'ai pas Delphi installé sur ce poste je ne peut pas tester mon code

    Essaye alors avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var i :integer; 
    begin 
     
     for i := 0 to table.fields.count - 1 do 
           if table.fields[i].FieldType = ftFloat
                  Then (table.Fields[i] as TFloatField).DisplayFormat := '#0.00'; 
     
    end;

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci DarkWinter, c'est le bon code.

    C'est bien par maîtrise insuffisante du language que je n'y étais pas arrivé.

    Problème résolu donc.

  7. #7
    Membre émérite
    Avatar de NoisetteProd
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    1 905
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 905
    Points : 2 614
    Points
    2 614
    Par défaut
    Merci de cliquer sur le bouton resolu en bas a gauche alors !!
    Fais cogiter ta Noisette !!

    Participez à la page SOURCES Delphi !

    Découvrez le Défi Delphi

    Mon Mail

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

Discussions similaires

  1. Affichage d'une colonne d'une ligne précédente
    Par d.tellier dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/01/2011, 10h13
  2. [AC-2003] Refus affichage d'une colonne dans une zone de liste
    Par ndukuliki dans le forum IHM
    Réponses: 6
    Dernier message: 07/02/2010, 11h21
  3. [XL-2003] Empêcher l'affichage d'une colonne
    Par LaPanic dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/10/2009, 18h27
  4. Affichage d'une colonne après migration
    Par fefe44 dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 04/03/2008, 19h56
  5. Propriete d'affichage d'une colonne dans Access
    Par ager1912 dans le forum Accès aux données
    Réponses: 1
    Dernier message: 23/10/2006, 19h36

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