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

Interfaces Graphiques Discussion :

checkbox sous condition


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 44
    Points
    44
    Par défaut checkbox sous condition
    Bonjour à tous !

    J'ai écris un petit programme qui tourne bien, mais je cherche à ajouter une condition dans mes checkboxes, et après avoir beaucoup chercher, evidement, je ne trouve pas comment faire !
    Dans mon GUI je créer un tableau avec 2 colonnes, une descriptive (Marques), et une de checkbox éditable (Cicatrices).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tf = false(size(Marques));
    T = table(Marques, tf);
    uit = uitable('Data', table2cell(T), ...
                  'Units', 'Normalized', 'Position', [0.10, 0.15, 0.46, 0.67], ...              
                  'RowName',([]),'ColumnName', {'Marques' 'Cicatrices'}, ...
                  'ColumnWidth',{120 80},'ColumnEditable', [false true]);
    Je cherche ensuite a comparer les cellules avec une base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    tmp = uit.Data(:, 2);
    logic=cell2mat(tmp);
     
    Slogic = [];
    S=zeros;
    for i=1:length(Matrix)
        v1 = Matrix(:,i);
        S(i) = isequal(logic,v1);
        Slogic = [Slogic ; S(i)];
    end
    Jusqu'ici tout va bien ! Maintenant, mon tableau ressemble à ça :
    Nom : tableau.jpg
Affichages : 285
Taille : 90,7 Ko

    Ce que je voudrais c'est que si je coche par exemple '3 et plus marques G' les cases '2 marques G' et '1 marques G' le soient aussi ! Si j'ai 3 marques, j'en ai forcement 1 ou 2, mais pas l'inverse évidement ! De même si j'ai la pointe qui manque elle ne peut pas être abîmée, donc si je coche 'Pointe G manquante', je ne devrais pas pouvoir cocher 'Point G abîmées' !

    Please help me !

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Le problème n'est pas très complexe mais il est fastidieux. Sur quoi buttes-tu exactement?

    1. Associer un callback de type CellEditCallBack à ton tableau, histoire de pouvoir entrer dans une fonction à chaque fois que tu vas cocher/décocher un bouton.

    2. Faire toutes les boucles if de condition.

    If ( 3 et + marques G )
    alors cocher 2 marques G et 1 marque G.

    Qu'est-ce qui te bloque ici?

  3. #3
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Pourrais-tu nous montrer le contenu de la variable Marques ?

  4. #4
    Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Jerome Briot Voir le message
    Pourrais-tu nous montrer le contenu de la variable Marques ?
    Bonjour,
    Voilà comment j'appelle mes variables !

    Nom : matrice.jpg
Affichages : 306
Taille : 220,6 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Marques = raw((2:end),1);
    Nom_Pm = raw(1,(2:end))';
    Matrix = num;
    merci de ton intérêt !

  5. #5
    Membre du Club
    Homme Profil pro
    Biologiste
    Inscrit en
    Mai 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Mai 2017
    Messages : 66
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Gooby Voir le message
    Bonjour,

    Le problème n'est pas très complexe mais il est fastidieux. Sur quoi buttes-tu exactement?

    1. Associer un callback de type CellEditCallBack à ton tableau, histoire de pouvoir entrer dans une fonction à chaque fois que tu vas cocher/décocher un bouton.

    2. Faire toutes les boucles if de condition.

    If ( 3 et + marques G )
    alors cocher 2 marques G et 1 marque G.

    Qu'est-ce qui te bloque ici?
    Bonjour,

    L'idée c'est que je suis complètement autodidacte en terme de programmation. Je suis biologiste de formation, et je me suis mis a bidouiller matlab il y a quelque mois parce que je galérais avec des tas de logiciels dont je ne comprenais pas trop le contenu réel. Donc, je sais maintenant faire des petits programmes simple avec de la bidouille et en transformant quelques bout de code ici et là, mais il y a encore des notions un peu vague pour moi ! Même si ça commence à venir et j'en suis assez fière !
    Dans ce cas, le celleditcallback par exemple oO ! Les conditions, on va dire qu'a force je fini par trouver mais ici, je ne sais pas comment trouver la fameuse case correspondante !

    Merci !

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Je vais essayer de rester simple dans ce cas.

    Es-tu d'accord que tu aimerais que lorsque tu interagis avec le tableau de ton interface graphique, il se passe quelque chose? Comme par exemple des vérifications par rapport à ta base de données.

    Ce qui veut dire qu'il faut que tu crée une fonction qui agit lorsqu'un utilisateur interagis avec ton tableau.

    Voici une page de la documentation qui pourrait grandement t'aider sur les interactions entre les objets graphiques de matlab et les fonction associés à ces objets graphique. Typiquement, tu auras des fonctions "l'utilisateur à cliquer sur le bouton", ou bien "l'utilisateur a changé la valeur d'une case".

    Dans ton exemple précis, tu auras surtout besoin du "l'utilisateur a modifié la valeur d'une case du tableau". Cette fonction s'appelle "CellEditCallBack".

    Lors de la création de ton objet graphique de type tableau, il faut que tu lui spécifies dans quel fonction tu veux qu'il entre au moment où l'action que tu désires se passe. Voir le petit exemple ci-dessous.

    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
    function main()
     
    figure;
    T = table(2,2);
    uit = uitable('Data', table2cell(T), ...
                  'Units', 'Normalized', 'Position', [0.10, 0.15, 0.46, 0.67], ...              
                  'RowName',([]),'ColumnName', {'Marques' 'Cicatrices'}, ...
                  'ColumnWidth',{120 80},'ColumnEditable', [false true],'CellEditCallBack',@uit_callback);
     
    end
     
    function uit_callback(src,event)
    %    Ici je fais ce que je veux, comme par exemple les comparaisons avec ma base de donnée
    %    je peux accéder à l'indice de la case modifié en regardant event.Indices
    end
    J'espère t'avoir un peu aider.

Discussions similaires

  1. rendre une checkbox invisible sous condition
    Par cubita dans le forum Langage
    Réponses: 27
    Dernier message: 03/05/2015, 08h54
  2. Désactiver des checkbox sous conditions
    Par Devilju69 dans le forum jQuery
    Réponses: 8
    Dernier message: 26/11/2014, 13h54
  3. Cocher ou décocher des checkbox sous condition
    Par babyben2 dans le forum jQuery
    Réponses: 6
    Dernier message: 20/06/2011, 12h23
  4. [AC-2007] Coché checkbox sous condition
    Par gabvoir dans le forum IHM
    Réponses: 4
    Dernier message: 17/07/2009, 08h59
  5. Create function sous condition
    Par nbl dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/05/2005, 12h00

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