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 :

Changer contenu DBGrid par programmation


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Par défaut Changer contenu DBGrid par programmation
    salut a tous
    delphi 7, interbase
    est ce qu'il est possible de modifier le contenue d'une colonne dbgrid par programmation
    j'ai une table agent qui a comme champs(num,nom,prenom,sex')
    le champs sex je les codifier sur une position caractaire, donc le champ sex peut avoir un F pour féminin et un H pour le masculin, pour afficher le contenue du fichier agent dans la dbgrid le champ sex affichera un F ou un H et moi je voudrez si le sex et H j'affiche Homme et si F j'affiche Femme dans la colonne sex
    merci d'avance

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 148
    Par défaut
    Si c'est juste de l'affichage, rien de plus simple "OnGetText et son paramètre Text à ne modifier que si DisplayText est à True"

    Je n'ai pas Homme/Femme mais j'ai l'équivalent avec les mois, stocké de 1 à 12 en Table mais affiché en clair

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //------------------------------------------------------------------------------
    procedure TxxxForm.FieldMonthTextEventHandler(Sender: TField; var Text: string; DisplayText: Boolean);
    begin
      if DisplayText and Assigned(Sender) and not Sender.IsNull then
        Text := FormatSettings.LongMonthNames[Sender.AsInteger];
    end;
    ou alors un Pourcentage stocké entre 0 et 1 en base mais affiché entre 0 % et 100 %

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //------------------------------------------------------------------------------
    procedure TxxxForm.PourcentFieldGetDisplayText(Sender: TField; var Text: string; DisplayText: Boolean);
    begin
      if DisplayText and Assigned(Sender) and not Sender.IsNull then
        Text := FormatFloat('0.00 %', Sender.AsFloat * 100);
    end;

    Si c'est aussi pour de la modification, c'est là que cela devient pénible avec la TDBGrid standard
    Il existe le mode PickList que je te déconseille car peu pratique lorsque l'on utilise un thésaurus type Code/Libellé
    Deux approches :
    • une seule colonne pour le Code et un OnGetText pour transformer le code en libellé et un OnSetText pour transformer le libellé en code
    • deux colonnes dans le DataSet, une pour le Code du théaurus, une pour le libelle du thésaurus, manuellement avant le Post ou dans le BeforePost, c'est à ce moment que cela fait la résolution du Libellé en code


    Si quelqu'un connait un meilleur moyen sur la PickList pour retrouver le code, pour ma culture j'aimerais bien le savoir !


    Personnellement, je préfère le mode Ellipsis où je fournis mon propre dialogue via OnEditButtonClick ou OnCellClick
    Cela permet d'avoir un éditeur plus avancé et de pouvoir gérer l'ItemIndex de la Combo et Objects[]
    Utiliser ItemIndex est plus fiable je trouve que IndexOf du Libellé d'une PickList

    Pour moi une raison de plus pour utiliser Ellipsis/OnEditButtonClick, c'est que j'ai déjà tout plein d'assistant GUI qui fournissent les sélecteurs ou les thésaurus les plus communs du progiciel dont je m'occupe
    Ainsi, je n'ai pas réinventé ce qui existe déjà !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 498
    Par défaut
    salut

    directement dans le dataset
    Tu doubleclick dessus pour l'ouvrir
    bouton Gauche
    nouveau champs
    type de champs : reference
    tu donne ton champs cle
    ensuite dans ensemble de donnée l'autre requette te permettant d'avoir ton libelle
    la clé de référence pour que l'on puisse donner un lien
    et le champs resultat qui seras ton libelle

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 148
    Par défaut
    N'utilisant que jamais les champs persistants, j'avais encore oublié où cela se faisait dans l'IDE Comment afficher dans un DBGrid un libellé provenant d'un autre dataset que le dataset en cours ?
    C'est un peu le problème d'avoir une couche d'objet métier, tout ce fait en RunTime !

    Par contre, en code, ça c'est facile

    Deux tables :
    • Session
    • Jour de la Semaine


    La session contient un tas de champs dont le jour de la semaine
    Et j'ai un thésaurus pour cela

    Voici une version résumé d'un code que j'ai où j'utilise un champ lookup à la place d'un OnGetText
    Je trouve cela pénible car comme en mode IDE, il faut déclarer tous les champs que l'on veut exploiter depuis le DataSet
    Il manque vraiment un mode mixte Champs Persistant & Volatile où l'on pourrait définir ses fkCalculated et fkLookup en code ou dans l'IDE mais qu'il charge quand même tous les champs volatiles de type fkData !

    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
    17
    18
    19
    20
    21
    22
    23
    24
     
      with TIntegerField.Create(EntitySession.DataSet)do
      begin
        FieldName := 'SS_N_JOUR';
        FieldKind := fkData;
        DataSet := EntitySession.DataSet;
      end;
     
      // Ajout des autres champs ...
     
      with TStringField.Create(EntitySession.DataSet) do
      begin
        FieldName := 'F_SS_JOUR_LIBELLE';
        FieldKind := fkLookup;
        LookupDataSet := EntityJourSemaine.DataSet;
        LookupKeyFields := 'JO_N_JOURSEM' ;
        LookupResultField := 'JO_CH_JOURSEM';
        KeyFields := 'SS_N_JOUR';
        Lookup := True;
        DataSet := EntitySession.DataSet;
      end;
     
      EntityJourSemaine.LoadAll();
      EntitySession.LoadAll();
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 498
    Par défaut
    salut

    rien ne t’empêche de le faire ?

Discussions similaires

  1. [WD14] Affichage contenu colonne par programmation
    Par Aenur56 dans le forum WinDev
    Réponses: 4
    Dernier message: 26/05/2010, 18h11
  2. Réponses: 2
    Dernier message: 03/11/2006, 10h34
  3. manipulation par programmation d'un DBGRID et d'un COMBOBOX avec DELPHI6
    Par djambo1er dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/08/2006, 11h25
  4. Comment selectionner un row dans DBGrid par programmation
    Par lingli dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/06/2006, 13h58
  5. [WD10] Changer l'adresse IP d'une base HF par programmation
    Par routmout dans le forum WinDev
    Réponses: 1
    Dernier message: 20/06/2006, 21h01

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