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 :

Comment faire en sorte qu'un TCheckGroup gère des IDs en plus des libellés [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Comment faire en sorte qu'un TCheckGroup gère des IDs en plus des libellés
    Bonjour,

    J'utilise Lazarus pour un projet mais je rencontre une difficulté quant à l'utilisation du composant TCheckGroup

    Ce composant est alimenté par une table qui contient une colonne ID et une colonne Libellé.

    Le TCheckGroup affiche correctement la liste des libellés mais c'est la que vient la difficulté.
    Lorsque que mes CheckBoxs sont cochées, j’appuie sur un bouton valider qui va positionner mes choix dans une autre table qui elle ne comporte que les ID et pas les libellés.
    Le problème c'est que mon TCheckGroup contient la liste des libellés mais pas celle des ID de libellé.

    J'ai chercher la possibilité de créer une colonne ID "cachée" dans le TCheckGroup qui me permettrai de récupérer les ID correspondant aux cases cochées pour pouvoir les positionner dans la table, mais je ne parviens pas à le faire. Est ce possible ?
    Sinon avez vous une autre idée qui pourrait répondre à mon problème ?

    J'espère avoir été assez clair dans la description du problème

    Merci pour vos réponses.

  2. #2
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Bonjour,

    Puisqu'il n'existe pas de liste pour les ID, il faut en créer une.

    De là, deux manières de la remplir :

    • utiliser l'évènement "OnItemClick" pour remplir la liste ID
    • balayer tous les items lors de la validation pour remplir la liste.

    Cordialement.

    Pierre

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    je vous remercie pour cette réponse.

    Je vais essayer cela.

    Cordialement.

  4. #4
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 556
    Points : 3 933
    Points
    3 933
    Par défaut
    Salut

    Je pense que tu fais fausse route, si j'ai bien compris ton besoin.

    Il existe le composant TDBLookupComboBox qui permet un choix unique et qui gère le couple (code, libellé), on affiche le libellé mais on manipule le code en interne. De mémoire, il faut définir :
    - soit autant de champs de type référence dans l'ensemble de données cible (celui qui récupère les ID) à partir de l'éditeur de champs persistants et affecter la propriété DataField du composant avec ce champ de type référence, j'utilisais cette méthode dans Delphi il y a longtemps.
    - soit de mettre en oeuvre les propriétés ListSource et ListField qui semble ne pas nécessiter de champ persistants, je ne l'ai jamais utilisé.

    Désolé mais je n'ai pas trop le temps de détailler maintenant.

    Cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Je connais le TDBLookUpComboBox, je l'utilise déjà et est effectivement très pratique pour récupérer l'ID du choix qui a été fait dans le composant.
    Cela fonctionne très bien.

    En revanche dans le cas présent, j'aimerai faire la même chose mais avec un composant TCheckGroup ou TCheckListbox mais ils ne comportent pas de propriété DataField, ListSource, ListField comme le TDBLookUpComboBox

    Pour rappel mon TCheckGroup est alimenté par une table. Cette table est composé d'une colonne ID et d'une colonne Libellé
    Le TCheckGroup affiche actuellement chaque libellé de ma table. Lorsque que je coche une case j'aimerai pouvoir récupérer l'ID du libellé coché

    Merci beaucoup pour votre réponse et ne vous excusez pas de ne pas pouvoir détaillé plus.

    Cordialement.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Points : 172
    Points
    172
    Par défaut
    Bonjour.

    Je ne suis pas sûr d'avoir bien compris ton besoin ...
    Le TCheckGroup est un ensemble de cases à cocher, chacune ayant un "caption" qui peut être récupéré ensuite. Donc, s'il est alimenté uniquement avec des libellés provenant d'une table, on ne peut récupérer que ce libellé !

    Je vois plusieurs solutions :
    • comme on te l'a déjà suggéré, tu crées une liste contenant les id. Quand tu alimentes le TCheckGroup avec un libellé, tu mets en même temps l'id correspondant dans ta liste. Quand ensuite tu cliques sur le libellé d'index 4 par exemple, l'id correspondant est celui d'index 4 dans la liste ...
    • ou alors, connaissant le libellé, tu vas à l'enregistrement correspondant de ta table et trouves ainsi l'id (cela nécessite je pense que les libellés soient uniques dans la table).
    • moins "beau" : tu alimentes ton TCheckGroup avec l'id et le libellé séparés par un tiret (ou autre caractère de ton choix) par exemple : "27 - Mon libellé", que tu dois décomposer quand tu le récupères.


    Cordialement.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Citation Envoyé par thewolf Voir le message
    Le TCheckGroup est un ensemble de cases à cocher, chacune ayant un "caption" qui peut être récupéré ensuite. Donc, s'il est alimenté uniquement avec des libellés provenant d'une table, on ne peut récupérer que ce libellé !
    Effectivement il est actuellement alimenté avec les libellés seulement. Mais avant cela j'avais essayé de l'alimenter avec l'ID et le Libellé. Seul problème c'est que je me retrouvais avec une case a cocher pour l'ID puis une case a cocher pour le libellé et ainsi de suite pour chaque enregistrement de la table.

    Citation Envoyé par thewolf Voir le message
    comme on te l'a déjà suggéré, tu crées une liste contenant les id. Quand tu alimentes le TCheckGroup avec un libellé, tu mets en même temps l'id correspondant dans ta liste. Quand ensuite tu cliques sur le libellé d'index 4 par exemple, l'id correspondant est celui d'index 4 dans la liste ...
    ou alors, connaissant le libellé, tu vas à l'enregistrement correspondant de ta table et trouves ainsi l'id (cela nécessite je pense que les libellés soient uniques dans la table).
    Je vais tester ces deux options

    Merci beaucoup.

    Cordialement

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Problème résolu.

    j'ai opté pour cette solution :
    Citation Envoyé par thewolf Voir le message
    Tu crées une liste contenant les id. Quand tu alimentes le TCheckGroup avec un libellé, tu mets en même temps l'id correspondant dans ta liste. Quand ensuite tu cliques sur le libellé d'index 4 par exemple, l'id correspondant est celui d'index 4 dans la liste
    Merci beaucoup d'avoir pris le temps de m'aider.

    Cordialement.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/03/2016, 20h22
  2. Réponses: 1
    Dernier message: 10/10/2008, 16h23
  3. Comment faire en sorte que le prog se fasse répéter
    Par LeonHONORE dans le forum Pascal
    Réponses: 3
    Dernier message: 20/04/2008, 21h41
  4. Réponses: 3
    Dernier message: 02/08/2007, 17h06
  5. Réponses: 3
    Dernier message: 27/04/2006, 08h03

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