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 :

Guidata et str2double


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Nantes
    Inscrit en
    Août 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Nantes
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 11
    Par défaut Guidata et str2double
    Bonjour à tous.
    Je fais de nouveau appel à vous car j'ai un soucis avec l'utilisation de guidata.

    J'ai créé une première fonction :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    function gui_guidata_guihandles
     
    tab(2) = uitab(hTabGroup, 'title','Accueil');
     
    uicontrol(tab(2),'style','edit','units','normalized','position',[0.05 0.48 0.05 0.03],...
        'string','99',...
        'FontSize',10,'value',1,'callback',@tab2_Tcons_init,'tag','Essai1_Tcons_init');
     
    uicontrol(tab(2),'style','pushbutton','units','normalized','position',[0.05 0.30 0.2 0.05],...
        'string','Lancer la simulation',...
        'FontSize',10,'callback',@simulation);
     
    data=guihandles(gcf);guidata(gcf,data)
    function tab2_Tcons_init(Object,event)
        data.Essai1_Tcons_init=str2double(get(Object,'string'))
    end
    guidata(gcf,data)
     
    % Jusque là tout va bien.
     
    function simulation(obj,event)
        % Récupération des données stockées dans les données d'application de l'objet Figure
        % contenant l'objet graphique dont l'action est exécutée (gcbf)
        data=guidata(gcbf) % L'égalité n'est pas respectée (de mon point de vue en tous cas..)
        data.Essai1_Tcons_init % Ne correspond plus à ce qui était enregistré (pas 99)
        a=data.Essai1_Tcons_init+1 % Fais bien le calcul mais du cop à partir de la mauvaise valeur
        guidata(gcbf,data)
    end

    L'objectif est que l'utilisateur rentre les données, et que je les récupère pour les utiliser par la suite.
    Je débute avec tout ce qui est gui du coup votre aide est la bienvenue.
    Merci,
    Mathieu

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Ne ferme pas les sous-fonction avec le mot-clé [B]end/B], car cela les transforme en fonctions imbriquées (nested function).
    Ce type de fonctions me semblent plus difficiles à appréhender que les sous-fonctions classiques.
    Voir la FAQ : Qu'est-ce qu'une fonction imbriquée (nested function) ?

    On associe rarement un Callback aux objets EditText. Ici, le premier Callback ne sert à rien.

    Quand tu utilises guihandles et guidata, le nom des champs de la structures handle sont les propriétés Tag des objets.
    La valeur stocké est l'identifiant de l'objet concerné.

    Essaie ceci :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    function gui_guidata_guihandles
     
    fig = figure;
     
    hTabGroup = uitabgroup(); 
     
    tab(2) = uitab(hTabGroup, 'title', 'Accueil');
     
    uicontrol(tab(2), 'style', 'edit', 'units', 'normalized', ...
        'position', [0.05 0.48 0.05 0.03], 'string', '99',...
        'FontSize', 10, 'tag', 'Essai1_Tcons_init');
     
    uicontrol(tab(2), 'style', 'pushbutton', 'units', 'normalized', ...
        'position', [0.05 0.30 0.2 0.05], 'string', 'Lancer la simulation',...
        'FontSize', 10, 'callback', @simulation);
     
    data = guihandles(fig);
    guidata(fig, data)
     
    function simulation(hObject,event)
     
        fig = get(hObject, 'parent');
     
        data = guidata(fig);
     
        data.Essai1_Tcons_init
        a = data.Essai1_Tcons_init+1
     
        str = get(data.Essai1_Tcons_init, 'string')
        b = str2double(str)+1
     
        guidata(fig,data)

  3. #3
    Membre averti
    Homme Profil pro
    Nantes
    Inscrit en
    Août 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Nantes
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2014
    Messages : 11
    Par défaut
    Bonjour Dut,

    Réponse rapide comme toujours, merci !

    J'ai fais mes modification suite à ton exemple.
    Cela fonctionne bien pour b mais par pour a.
    Si je comprends bien cela est normal puisque data.Essai1_Tcons_init me renvoit l'identifiant et non pas le 'string'.
    J'ai donc tenté ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        data.Essai1_Tcons_init
        a = data.Essai1_Tcons_init+1
     
        str = get(data.Essai1_Tcons_init, 'string')
        b = str2double(str)+1
        set(data.Essai1_Tcons_init, 'string', num2str(b));
     
        str2 = get(data.Essai1_Tcons_init, 'string')
        c = str2double(str2)+1
    Et, oh miracle, ça fonctionne !

    Je rajoute pour les personnes qui plus tard liront ce post.
    On peut également faire ceci (j'ai cherché un peu):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    filename = get(data.(sprintf('Essai%d_filename',yo)),'string')
    Une fois de plus merci pour cette information. Ca a fait 'tilt' là haut !

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

Discussions similaires

  1. Problème avec guidata
    Par Bloodista dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 09/06/2009, 18h54
  2. [Débutant] GUIDATA GUIHANDLES
    Par nocolach dans le forum Interfaces Graphiques
    Réponses: 15
    Dernier message: 27/06/2008, 20h35
  3. Utilisation de guihandles et guidata
    Par larimoise dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 20/11/2007, 01h35
  4. Problème avec GUIDATA GUIHANDLES
    Par soeursourire dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 23/10/2007, 15h53
  5. [Débutant] GUIDATA Save
    Par ancrou dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 25/06/2007, 14h12

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