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

Lazarus Pascal Discussion :

Forcer un affichage dans une TDBGrid [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 337
    Points : 9 592
    Points
    9 592
    Par défaut Forcer un affichage dans une TDBGrid
    Bonjour,

    Voilà, j'ai un TZQuery (de Zeos) qui me renvoie exactement ce que je veux, et donc je devrais être satisfait ! MAIS, ben oui, sans mais, ça ne serait pas drôle.

    Mais, ce que je reçois est une liste de noms suivi d'un chiffre représentant un indice. L'indice va de normalement de 1 à nn, et représente une limite. La personne qui a créé la base à décider que 99 représentait "No Limit", qu'il représente par un "NL" dans le tableau. Et à l'opposé, 0 représente une impossibilité et est représenté par "X".

    Comment je peux faire pour que ma dbgrid liée à ma table via datasource, reflète cela ? (Pour l'indice, c'est pas dur, mais pour remplacer 99 par NL et 0 par X ?

    Merci d'avance,

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 245
    Points : 534
    Points
    534
    Par défaut
    Bonsoir,

    Je ne connais pas spécialement Zeos, mais le TZQuery étant sûrement un Dataset puisqu'il est est connecté au Datasource, n'est-il pas possible d'y définir un champ calculé dans lequel vous pouvez définir ce NL ou ce X en fonction du nom. Vous pourrez même définir un autre champ XNom où figurerait le nom sans indice. Ces champs sont à calculer dans l'événement OnCalcFields du dataset et à lier à votre dbGrid.

    André

  3. #3
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    469
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 469
    Points : 1 100
    Points
    1 100
    Par défaut
    Bonjour,

    La solution proposée par André est excellente mais, pour être complet, on peut en citer au moins deux autres possibles :

    1) Utiliser une requête SQL qui retourne les valeurs X et NL à la place de certains noms. On n'est pas dans un forum SQL et je ne sais pas quel est le SGBD mais, en général, c'est possible avec un CASE ... WHEN. Le principal avantage est que cela permet de trier facilement selon le champ ainsi calculé. Les calculs sont déportés vers le serveur : certains y verront un avantage, d'autres un inconvénient...

    2) Modifier la donnée à l'affichage avec l'événement OnGetText du champ du DataSet.
    Cordialement,
    Tintinux

    Initiateur de Gestinux, une comptabilité gestion open-source, pour Linux, Windows et Mac OS.
    Une version stable et une autre en développement, avec Lazarus : vous pouvez aider à la tester, la traduire et à la développer.

  4. #4
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 337
    Points : 9 592
    Points
    9 592
    Par défaut
    Bonjour,

    et merci de vos excellentes réponses. Je n'ai pas l'habitude du SQL et ne pense pas à la puissance de ce langage.
    Ma base est MySQL et SQLite (le programme doit gérer les 2 types de bases).

    Je vais explorer vos solutions, et vous dirais laquelle j'ai choisi.

    Encore merci,
    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 409
    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 409
    Points : 5 797
    Points
    5 797
    Par défaut
    salut

    si ce n'est que la restitution visuel il te suffit de redessiner la cellule
    tu devrais avoir un événement OnDrawColumnCell dans ton dbgrid

    pour écrire un texte tu devrais avoir la fonction TextRect du canvas qui devrais pouvoir t'aider
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  6. #6
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 337
    Points : 9 592
    Points
    9 592
    Par défaut
    Bon, SQLite ne permettant pas le If ou le Case, je suis passé par un champ calculé et ça fonctionne très bien.

    Merci à vous.

    JS

    PS : anapurna, je n'ai pas testé avec le OnDrawColumnCell car ça me semble un poil complexe...
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  7. #7
    Membre éprouvé
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 419
    Points : 1 096
    Points
    1 096
    Par défaut
    Bonjour,

    Bon, SQLite ne permettant pas le If ou le Case
    Si Si https://www.sqlite.org/syntax/expr.html

    Cordialement

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

Discussions similaires

  1. Forcer l'affichage dans une boucle
    Par jb36123 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/08/2006, 15h40
  2. Forcer l'affichage d'une page dans un cadre
    Par Thcan dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/11/2005, 11h58
  3. [iframe]pb d'affichage dans une iframe
    Par Destampy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/06/2005, 15h55
  4. affichage dans une boite de texte en fonction d'un choix
    Par bachilbouzouk dans le forum ASP
    Réponses: 3
    Dernier message: 19/04/2005, 15h53
  5. [mfc] affichage dans une boite de dialog
    Par chronos dans le forum MFC
    Réponses: 3
    Dernier message: 14/06/2004, 16h12

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