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 :

Listbox et probleme de cell array [Débutant]


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 48
    Par défaut Listbox et probleme de cell array
    Bonjour,

    je me fais la main avec l'outil GUIDE.
    J'ai cree une listbox. La fonction createFlist2() definit les champs que je souhaite afficher dans la liste. Elle est appelee dans la fonction listbox1_CreateFcn(hObject, eventdata, handles).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function createFlist2()
    % Create the list
    liste = [2005 2006 2007 2008];
    % Associate the listbox with a handle
    handle = findobj(gcbf,'tag','listbox1');
    % Link the handle with the list
    set(handle,'string',liste);
    J'utilise les "hints" proposees pour recuperer la valeur du champ selectionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function listbox1_Callback(hObject, eventdata, handles)
    % default comments
    % Hints: contents = get(hObject,'String') returns listbox1 contents as cell array
    %        contents{get(hObject,'Value')} returns selected item from listbox1
     
    valeur = get(hObject,'Value');% returns selected item from listbox1;
    texte = get(hObject,'String');%recupere TOUTES les chaines de caracteres de la liste
    ch_sel = texte{valeur};
    mais MATLAB me retourne l'erreur :
    ??? Cell contents reference from a non-cell array object.

    Error in ==> Test1>listbox1_Callback at 87
    ch_sel = texte{valeur};

    Error in ==> gui_mainfcn at 96
    feval(varargin{:});

    Error in ==> Test1 at 42
    gui_mainfcn(gui_State, varargin{:});

    Error in ==>
    @(hObject,eventdata)Test1('listbox1_Callback',hObject,eventdata,guidata(hObject))


    ??? Error while evaluating uicontrol Callback
    Avez - vous une idee de mon erreur de grand debutant. Je n'ai pas trouve de solution dans les differents Forum.

    Merci d'avance.

    Lepapat

  2. #2
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Le problème vient de la définition de ta variable liste qui est un vecteur.
    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.

    Il suffit de regarder ce que retournes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte = get(hObject,'String')
    Pour récupérer ce que tu veux du coup il faut faire :
    Mais je te conseillerais plutôt de changer ta définition de liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste = {2005 2006 2007 2008};

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 48
    Par défaut
    Je te remercie beaucoup pour ce retour rapide !

    En fait mon probleme d'origine est de pouvoir charger une liste de fichiers contenus dans un repertoire.

    je me suis donc inspire d'une autre discussion du forum (et de ta solution d'ailleurs ).

    http://www.developpez.net/forums/d37...ier-popupmenu/

    et cree la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function createFlist()
    % Create the list of files
    liste = ls('L:\UoChantier\Z25-VC_TITRATION\VC_TITRATION3a_Seattle\*data*.txt');
    % Associate the listbox with a handle
    handle = findobj(gcbf,'tag','listbox1');
    % Link the handle with the list
    set(handle,'string',liste);
    mais j'avais ce probleme de cell array ; d'ou l'utilisation d'une liste d'annees faite maison.

    Il faut donc que je m'assure que liste est bien une cell array.

    Merci encore.

    Lepapat

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 48
    Par défaut
    je n'avais pas parcouru l'ancienne discussion jusqu'au bout. finalement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function createFlist3()
    d=dir('L:\UoChantier\Z25-VC_TITRATION\VC_TITRATION3a_Seattle\*data*.txt');
    liste={d(:).name}
    handle = findobj(gcbf,'tag','listbox1');
    set(handle,'string',liste);
    fonctionne tres bien.

    Double merci

    lepapat

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

Discussions similaires

  1. probleme avec un array
    Par kaygee dans le forum ASP
    Réponses: 8
    Dernier message: 26/03/2007, 12h33
  2. Ajouter un élément à un cell array
    Par Wookai dans le forum MATLAB
    Réponses: 5
    Dernier message: 10/01/2007, 13h23
  3. Cell array
    Par anabelle dans le forum MATLAB
    Réponses: 9
    Dernier message: 09/11/2006, 13h24
  4. Convertir un cell array en string
    Par Sensib dans le forum MATLAB
    Réponses: 3
    Dernier message: 09/11/2006, 13h12
  5. [Delphi] Probleme de Cell Shading
    Par legion_promethe dans le forum DirectX
    Réponses: 1
    Dernier message: 15/06/2006, 03h59

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