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 :

Champ integer à faire apparaître sous forme de chaîne


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut Champ integer à faire apparaître sous forme de chaîne
    Bonjour

    J'utilise Firedac dans Delphi Sydney.
    Une table dans ma base Firebird a une colonne de type Integer.
    J'affiche cette valeur dans une grille de saisie: TDBGrid

    En fait, ma valeur représente plusieurs états possibles:
    0 = non répondu
    1 = Oui
    2 = Non
    3 = Réponse attendue
    etc.

    Dans ma grille je vais utiliser une TDBCombobox qui apparaîtra au moment de la saisie pour une ligne.

    Problème: Dans ma grille et ma combo, je ne veux pas afficher 0, 1, 2 etc. mais les valeurs textes plus explicites.

    Il me semble qu'on pouvait faire ça mais je ne retrouve plus le moyen d'y arriver.

    Quelqu'un aurait une piste à me donner ?

  2. #2
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Par défaut
    Tu peux tenter avec un champ calculé au niveau de ta table.

    L'autre solution serait d'utiliser les fonctions de formatage au niveau du lien Live Bindings, mais c'est pas hyper maintenable.

  3. #3
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    Le champ calculé ? Pour l'affichage ça ira mais pour la modification avec la TDBCombobox, ça se passerait comment ?
    Pour moi, un champ calculé affiche un résultat de calcul justement, mais je pourrais vraiment mettre mon champ calculé dans la combo ?
    Ou alors, tu veux dire que la liste de choix ne serait pas liée à la table mais juste une liste de chaines et je pourrai gérer la valeur en fonction du choix ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Il me semble avoir déjà fait ça (âge oblige) en D3 il faut que je retrouve mes sources et dans quel(s) programme(s)
    Il me semble aussi que smDBGrid (visible elipsis and dropdown buttons for each record for Lookup-fields, PickLists etc ) propose une solution plus facile (si tu n'es pas allergique au produits tiers)
    Cela écrit ce ne sont que des "il me semble" d'un petit matin brumeux, que seul une recherche dans mes application confirmerait

    Déjà, s'il s'agit toujuors du même sujet avec Firebird, avec le SQL pas besoin de champ calculé pour l'affichage un CASE peut fonctionner
    SELECT
    --
    CASE REPONSE WHEN 0 then 'non répondu'
    WHEN 1 then 'Oui'
    WHEN 2 then 'Non'
    WHEN 3 then 'Réponse attendue'
    ...
    ELSE '?'
    END AS INTITULEREPONSE,
    --
    FROM TABLE
    la question de l'intitulé dans la grille sera donc réglé

    Pour la suite, attends-toi à un [Edit] de ma part, le reveil se fait petit à petit, mes premiers souvenirs me disent que j'utilisai un DBcombobox ou un combobox à part (bien positionné sur la grille) mais c'est encore nébuleux

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 658
    Billets dans le blog
    65
    Par défaut
    J'ai fini par retrouver, dans un de mes plus vieux programme quelque chose qui ressemble à ta demande
    Nom : Capturer.PNG
Affichages : 133
Taille : 7,2 Ko

    à l'époque c'est pas récent ça date de 1998 voilà ce que ça donnait
    Nom : Capturer1.PNG
Affichages : 123
Taille : 40,0 Ko
    cela dit je m'en sortais parce que le type était en fait un caractère et non un entier et cela ne dépassait 9 (1 ou 2) la chaine du 'combox' était tronquée

    Citation Envoyé par pprem
    L'autre solution serait d'utiliser les fonctions de formatage au niveau du lien Live Bindings,
    Je me demande comment je ferai maintenant avec les livebindings (ou sans d'ailleurs).
    le hic des Livebindings c'est que les IfThen imbriqués dans une expression cela ne le ferait pas (trop complexe) il faudrait faire une méthode spécifique (cf. mon deuxième ou troisième tuto sur le sujet https://serge-girard.developpez.com/...gs/Episode-2a/)

  6. #6
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    Donc, c'est possible.

    Les valeurs sont limitées à 5 pour moi.
    Il suffirait que j'utilise ce case dans la requête et la picklist qui va bien.
    La smdbgrid, j'y avais pensé mais elle a un drôle de comportement et je ne sais pas si ça vient de Sydney ou s'il y a un bug ou deux
    Par exemple, j'en avais posé 2 sur la tform et quand je cliquais sur une cellule de la première et ensuite sur la seconde, la valeur de la première cellule s'affichait dans le seconde :-(
    Alors, je me suis rabattu sur du standard.
    J'avais pensé à la rxlib dans la jvcl mais j'évite, parce que installer 600 composants pour en utiliser 1, je trouve _ça un peu excessif.

    Je vais essayer ta solution.

    Merci pour cette piste intéressante.

Discussions similaires

  1. Réponses: 17
    Dernier message: 08/12/2008, 12h01
  2. Réponses: 8
    Dernier message: 19/10/2006, 15h41
  3. Créer d'objets DOM à partir d'XHTML sous forme de chaîne
    Par Oscar Hiboux dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 29/03/2006, 15h04
  4. Réponses: 11
    Dernier message: 30/01/2006, 16h26
  5. Réponses: 17
    Dernier message: 03/10/2005, 11h16

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