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

Composants VCL Delphi Discussion :

DisplayFormat à l'affichage d'un DBgrid


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Par défaut DisplayFormat à l'affichage d'un DBgrid
    Bonjour,
    Comme c'est déjà signalé dans une autre discussion de ce forum, DisplayFormat n'existe pas pour un Query genre Tquery ou TIBquery,
    je cherche un methode d'affichage dans un DBGrid d'une colonne numérique genre 3 chiffres après la virgule, sachant que mon Query génére une requête ajouté dans le code source (d'une manière dynamique) et qui change selon le Form affiché, j'ai utilisé la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure Tfrmdepenses.dbgrilleDrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
    if Column.FieldName='MONTANT' then
    FormatMaskText('### ##0.000',Column.Field.DisplayText);
    end;
    mais ça n'a rien changé Y-a-t-il une autre méthodes s'il vous plait ??
    Un grand à tous d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Par défaut
    Bonjour

    Si L'affichage est pour tous les zones d'edition, et non uniquement pour les TDBGrid, vous pouvez utiliser les DisplayText/GetdisplayText des champs afficher.
    Attention, si vous faite une saisie, sur un champs, ce n'est pas toujour pratique d'écrire '1 565 000,25' au lieu de '1565000,25'.

    L'aide Delphi7 en français (plus pratique que l'aide Delphi 2007) donne ceci.
    Représente la valeur du champ telle qu'elle est affichée dans un contrôle orientédonnées.

    Syntaxe Delphi :

    propertyDisplayText:String;

    Syntaxe C++:

    __ propertyAnsiStringDisplayText ={read=GetDisplayText};

    Description

    DisplayText est la représentation chaîne en lecture seule de la valeur d'un champ devant être affichée dans des contrôles orientés données.Elle représente la valeur du champ quand il n'est pas en cours de modification.Si le champ est en cours de modification,utilisez la propriétéText.

    Si le champ possède un gestionnaire d'événement OnGetText,DisplayText contient la valeur renvoyée par le paramètre Text du gestionnaire d'événement OnGetText quand son paramètre DisplayText a la valeur true.Sinon,DisplayText contient la valeur de la propriétéAsString.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Par défaut
    Bonsoir Tardiff Jean-François;
    Votre réponse des vraiment détaillée, je l'ai lu plusieurs fois mais j'ai pas compris ce que je dois faire dans mon cas : afficher une valeur numérique dans un format semblable à '### ##0.000' dans un dbgrid des données provenant d'un query genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dm.qautre.sql.add('select * from depenses');
    dbgrille.dataset:=dm.qautre;
    dm.qautre.active:=true;
    dans cette requete je possède une colonne MONTANT que je désire l'afficher avec ses décimales mais elle s'affiche ainsi:

    Montant
    --------
    12.5
    102.32
    1502
    19.7

    Merci

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Par défaut
    Vous avez un champs contenant le montant, pour le trouvez vous devez utiliser quelque chose de ce genre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function FieldMontant: Tfield;
    begin
      dm.qautre.fieldByName('Montant');
    end;
    si vous affecter un evenement OnGetText à ce champs vous pouvez modifier a volonté la valeur afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FieldMontant.OnGetText := MontantGetText; // Affectation de l'événement
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure MontantGetText(Sender: TField; var Text: String;var DisplayText: Boolean);
    begin
     Text := Format ('###,###,###.##', Sender.AsFloat); // Creation du text visualiser
    DisplayText := True; // indique d'utiliser le text que j'ai fabriquer et non le text par défaut
    end;
    Attention, je n'ais pas tester le code. Je suis chez mois et je n'ai pas delphi.
    Par contre le principe fonctionne

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2006
    Messages : 40
    Par défaut
    Merci infiniment à Monsieur Tardiff Jean-François pour son effort (surtout il n'avait pas Delphi) et concernant la dernière réponse, ça n'a pas fonctionné puisque des nouvelles erreurs que je ne sais pas résoudre se sont présentées.
    En tout cas j'ai résolu mon problème avec une autre méthode:
    J'ai mis la requête dans un Tquery réservé seulement pour celle-là puis en double cliquant sur l'objet j'ai ajouté les champs désirés et là j'ai utilisé la propriété DisplayFormat à MonqueryMontant. (c’est une solution pour les apprentis comme moi )
    Bon ben c'est une solution qui ne me permet pas d'avoir des requêtes dynamiques différentes avec un seul Tquery mais c'est tout ce qu'on possède à bord .
    J'essai de m'améliorer au niveau de langage de programmation, ainsi j'aurait peut être un jour une Unit personnalisée pour la création d'un TMezianeQuery qui répond à ce besoin .
    Merci les Pros

Discussions similaires

  1. affichage dans une DBGrid
    Par socooooool dans le forum Bases de données
    Réponses: 1
    Dernier message: 01/06/2006, 16h11
  2. Réponses: 5
    Dernier message: 04/05/2006, 15h38
  3. Problème d'affichage dans la DBGrid
    Par Xjoker dans le forum C++Builder
    Réponses: 7
    Dernier message: 23/03/2006, 09h17
  4. Mettre à jour l'affichage d'un DBGrid
    Par deubal dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/11/2005, 15h22
  5. Affichage ds une DBGrid
    Par TieumB dans le forum C++Builder
    Réponses: 4
    Dernier message: 06/01/2004, 16h52

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