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 :

switch avec nombre de case variable ?


Sujet :

Interfaces Graphiques

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Par défaut switch avec nombre de case variable ?
    Bonjour,

    Est il possible de créer un switch qui change son nombre de case en fonction d'une variable définie précedemment.

    Bien sur, le code auu sein de chaque case dépendrait de cette variable.

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Je vois pas bien ce que tu veux faire

    Pourrais-tu préciser ton problème (avec un exemple)?

    Bonne journée,
    Duf

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 58
    Par défaut
    euh a tous hasard des switch case imbriqué?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Par défaut
    Je travaille en fait sur la réalisation d'une interface graphique permettant de visualiser sous forme de courbes des données issues d'un fichier Excel.

    au sein du M-file de mon GUI, je récupère la taille d'un onglet de mon fichier excel et j'ai besoin de créer un switch dans un popup menu dont le nombre de 'case' dépend de cette taille.

    le code de mon popup menu ressemblait à ça lorsque je définissais le nombre de cas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    val=get(hObject,'Value');
    str=get(hObject,'String');
    
    switch str{val}
        case 'P01'
            handles.num=handles.NUM(1);
            handles.current_data=xlsread(handles.nom_fic,handles.num,handles.posang);
    
        case 'P02'
            handles.num=handles.NUM(2);
            handles.current_data=xlsread(handles.nom_fic,handles.num,handles.posang);
    Ce fichier contenait 57 cas (imaginez la galère!!!).
    Je me répète mais j'aimerais maintenant utiliser un switch ou autres dant le nombre de cas dépend de la taille du fichier excel utilisé.
    Je changerais alors simplement le texte en rouge pour chaque case.

    Pouvez-vous m'aider?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour jponsoda,

    switch str{val}
    case 'P01'
    handles.num=handles.NUM(1);
    handles.current_data=xlsread(handles.nom_fic,handles.num,handles.posang);

    case 'P02'
    handles.num=handles.NUM(2);
    handles.current_data=xlsread(handles.nom_fic,handles.num,handles.posang);
    Pourquoi ne pas tout simplement récupérer le numéro qui se trouve dans str?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    n = str2num(str{val}(2:3));
    handles.num=handles.NUM(n);
    Dernière modification par Invité ; 10/06/2010 à 12h02.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Par défaut
    Ok, mais suis-je obligé d'utiliser un switch dans ces cas là.

    car j'ai l'impression qu'un switch est indispensable dans un popup menu.

    ????????

  7. #7
    Invité
    Invité(e)
    Par défaut
    D'après ce que tu as écrit dans ton 2ème post, il ne me semble pas que tu aies besoin d'un switch.
    Il te suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    val=get(hObject,'Value');
    str=get(hObject,'String');
    n = str2num(str{val}(2:3));
    handles.num=handles.NUM(n);
    handles.current_data=xlsread(handles.nom_fic,handles.num,handles.posang);
    Si ton numéro correspond bien à celui du texte contenu dans ton popup, il n'y a aucune raison.
    D'ailleurs si ta liste déroulante est la forme
    P01
    P02
    ...
    Tu peux directement utiliser le chiffre contenu dans ta variable val:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    handles.num=handles.NUM(val);
    Maintenant tu as peut-être d'autres contraintes que tu n'a pas mis....

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Par défaut
    ??? Error while evaluating uicontrol Callback

    ??? Cell contents reference from a non-cell array object.


    Error in ==> interface_graphique>numpt_Callback at 362
    nb=str2double(str{val}(2:3));
    J'ai ces lignes d'erreurs qui proviennent clairement d'un format d'objet.

    savez-vous comment la corriger?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Par défaut utilité et format de 'Value' dans un objet du GUI
    Bonjour,

    J'ai en fait le problème suivant:

    Dans la commande d'un popup menu, j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    val=get(hObject,'Value');
    str=get(hObject,'String');
    a=str{val};
    set(handles.strval,'String',a);nb=str2num(a(2:3));
    handles.num=handles.NUM(nb);
    handles.current_data=xlsread(handles.nom_fic,handles.num,handles.posang);
    et matlab me renvoie l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ??? Cell contents reference from a non-cell array object.
    
    Error in ==> interface_graphique>numpt_Callback at 363
    a=str{val};
    il y a clairement un problème de format d'objet.

    Je pense que cela vient de 'Value': je ne sais pas exactement à quoi sert cette objet et son format.

    Quelqu'un pourrait il m'expliquer??

  10. #10
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    salut
    il faut bien que tu soit dans le callback d'un pop-up pour ce type de code, i.e. hObject est le handles d'un pop-up.
    la propriété 'String' de cet objet est par exemple {'sel1', 'sel2', 'sel3'}
    la propriété 'Value' vaudra 1, 2 ou 3 selon ce qui a été sélectionné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    val=get(hObject,'Value');
    str=get(hObject,'String');
    a=str{val};
    a vaudra alors par exemple 'sel1'
    l'erreur n'est pas normale car tendrait à dire que str n'est pas un cell array donc à moins d'avoir mal défini cette propriété, ce n'est pas logique.

    edit : quoique
    Citation Envoyé par Caro-line
    Dans la propriété String d'une listbox on peut mettre soit un cell array (tableau de cellules) soit un tableau de caractères.
    Comme tu donnes à MATLAB un vecteur numérique, il le transforme automatiquement en tableau de caractères.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Peux-tu poster ce que tu obtiens en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    str=get(hObject,'String')

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 62
    Par défaut
    Lorsque j'affiche str=get(hObject,'String'),

    J'obtiens en fait la chaine suivante:
    P01
    P02
    P03
    P04
    .
    .
    .
    .
    .....

    ce qui correspond en fait bien au 'String' de mon popup menu.

    Voilà.

    Merci d'avance pour votre aide.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Envoyé par Caro-line
    Dans la propriété String d'une listbox on peut mettre soit un cell array (tableau de cellules) soit un tableau de caractères.
    Comme tu donnes à MATLAB un vecteur numérique, il le transforme automatiquement en tableau de caractères.
    C'est bien cela, c'est un tableau de string
    donc fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    n = str2double(str(val,2:3));

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

Discussions similaires

  1. Somme d'une colonne (avec nombre de rangée variable)
    Par Berny77 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/05/2008, 23h30
  2. Formulaire avec nombre de champ variable
    Par david87 dans le forum IHM
    Réponses: 0
    Dernier message: 21/04/2008, 10h16
  3. Requete paramétrée avec nombre de champs variable
    Par Braillane dans le forum Accès aux données
    Réponses: 3
    Dernier message: 07/02/2008, 23h09
  4. Un script shell avec nombre d'argument variable
    Par lastrecrue dans le forum Linux
    Réponses: 1
    Dernier message: 28/05/2006, 11h35
  5. méthodes avec nombres d'arguments variable
    Par spynux dans le forum Langage
    Réponses: 2
    Dernier message: 26/05/2006, 13h51

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