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 :

Passage de variable d'une fonction à une autre [Débutant]


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 12
    Par défaut Passage de variable d'une fonction à une autre
    Bonjour,

    J'ai donc programmer à la main une interface graphique. Donc l'interface contient des radios boutons et un push bouton. Mon problème est que je n'arrive pas à faire passer les variables entre les différentes fonctions.

    Je mets :
    data = guidata(gcbf); en début de fonction et
    guidata(gcbf,data); à la fin de chaque fonction.

    Il va de soi que j'enregistre toute mes variables comme un champs de data (exemple : data.ma_variable = xx).

    Si quelqu'un pourrait m'aider ça débloquerai pas mal mon programme.

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

    La méthode que tu décris est bonne, quel est ton problème exactement?
    As-tu des erreurs?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 12
    Par défaut
    Bonjours,
    Le problème que j'ai c'est lorsque je tape "data" dans la seconde fonction, j'ai bien mes variables de la première fonction? Donc ça, ça marche.
    Par contre dans ma seconde fonction lorsque j'essaye de récupérer les champs renseigné par l"utilisateur en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data.num_densite1 = str2num(get(data.edit_densite1,'String'));
    A ce moment j'ai le message d'erreur suivant:
    ??? Undefined function or variable 'edit_densite1'.
    Par contre actuellement j'ai résolue le problème en mettant juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    num_densite1 = str2num(get(data.edit_densite1,'String'));
    Mais là j'ai une variable qui est locale. Donc si je veux faire évoluer mon programme et utiliser ces variables dans une autre fonction....

    Si tu veux je peux te mettre mon code, pour que tu comprennes mon problème. En tout cas merci de m'aider

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je ne vois pas en quoi cela peut résoudre ce problème, celui-ci portant sur la variable 'edit_densite1'

    Pourrais-tu montrer la partie de code où tu la définis?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 12
    Par défaut
    En faite "edit_densite1" c'est le tag de la case edit text que l'utilisateur pourra renseigné.

    Je te mets le code minimum, pour que tu vois juste le fonctionnement
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
     
    "function test(varargin)
        close all;
        clear all;
        clc;
    %**************************************
    %   DEBUT DE LA FONCTION PRINCIPALE   *
    %**************************************
     
    %Création de l'objet Figure fenetre_1
    figure('units','pixels',...
        'outerposition',[0 30 800 700],...
        'name','[LCND] Simulation Waterman-Truell',...
        'numbertitle','off',...
        'menubar','none',...
        'tag','fenetre_1');
     
    %Création de l'objet Uipanel panel_milieu
    uipanel('Title',' Milieux ',...
        'FontSize',11,...
        'BackgroundColor','white',...
        'Position',[.01 .81 .30 .18],...
        'tag','panel_milieu');
     
    %********************
    %Uipanel panel_milieu
    %Création de l'objet Uicontrol radio_wtsa
    uicontrol('style','radio',...
         'callback',@wt_sa,...
        'units','normalized',...
        'position',[.03 .83 .09 .03],...
        'fontsize',9.0,...
        'string',' WTSA',...
        'tag','radio_wtsa');
     
    %Création de l'objet Uipanel panel_parametre1
    uipanel('Title','Paramètres D''entrées',...
        'FontSize',11,...
        'BackgroundColor','white',...
        'Position',[.01 .01 .30 .78],...
        'tag','panel_parametre1');
     
    %********************
    %Uipanel panel_parametre1
    %Création de l'objet Uicontrol text_densite1
    uicontrol('style','text',...
        'units','normalized',...
        'position',[.03 .68 .15 .032],...
        'fontsize',9.0,...
        'string','Densité (kg/m^3)',...
        'tag','text_densite1');
     
    %********************
    %Uipanel panel_parametre1
    %Création de l'objet Uicontrol edit_densite1
    uicontrol('style','edit',...
        'units','normalized',...
        'position',[.19 .68 .1 .032],...
        'fontsize',9.0,...
        'string','1000',...
        'tag','edit_densite1');
     
    %********************
    %Uipanel panel_parametre1
    %Création de l'objet Uicontrol text_no
    uicontrol('style','text',...
        'units','normalized',...
        'position',[.03 .10 .15 .032],...
        'fontsize',9.0,...
        'string','Nb inclusions par m3',...
        'tag','text_no');
     
    %********************
    %Uipanel panel_parametre1
    %Création de l'objet Uicontrol edit_no
    uicontrol('style','text',...
        'units','normalized',...
        'position',[.19 .10 .1 .032],...
        'fontsize',9.0,...
        'string','0',...
        'tag','edit_no');
     
    %Création de l'objet Uicontrol bouton_calculer
    uicontrol('style','pushbutton',...
        'units','normalized',...
        'position',[.1 .025 .1 .04],...
        'string','Calculer',...
        'callback',@calculer,...
        'tag','calculer');
     
    data=guihandles(gcf);
     
     
    %********************************************
    %   DEBUT DE LA SOUS-FONCTION WT_SA         *
    %********************************************
    function wt_sa(hObject, eventdata, handles) 
     
     data = guidata(gcbf);
     
     h = findobj(gcbf, 'style', 'radio');
     set(h, 'value', 0);
     set(gcbo, 'value', 1)
     data.flag=3;
     guidata(gcbf,data);
     
    %********************************************
    %   FIN DE LA SOUS-FONCTION WT_SA           *
    %********************************************
     
    %********************************************
    %   DEBUT DE LA SOUS-FONCTION CALCULER      *
    %********************************************
    function calculer(hObject, eventdata, handles)
     
    data = guihandles(gcbf);
     
    %Recuperation des parametres utilisateurs
     
    data.num_densite1 = str2num(get(edit_densite1,'String'));
    no=10;
    set(data.edit_no,'String',no);
     
    %Selection des milieux
     data=guidata(gcbf);
     
     if(data.flag==3) %wtsa
         data
     end
    "

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je suis un peu étonné, ce code contredit ce que tu as dis aux posts précédents:
    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 calculer(hObject, eventdata, handles)
    
     data=guidata(gcbf); % et non data = guihandles(gcbf);
    
    %Recuperation des parametres utilisateurs
    
    data.num_densite1 = str2num(get(data.edit_densite1,'String')); % que tu avais bien mis à ton 2ème post
    no=10;
    set(data.edit_no,'String',no);
    
    %Selection des milieux
    
     if(data.flag==3) %wtsa
         data
     end
    [EDIT] À la fin des définition des objets graphiques, rajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    data=guihandles(gcf);
    guidata(gcf,data); % à rajouter

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

Discussions similaires

  1. appliquer une fonction à une fonction
    Par stracoma dans le forum C++
    Réponses: 6
    Dernier message: 20/03/2015, 16h35
  2. [AJAX] Passage data d'une fonction à une autre
    Par domux dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/06/2007, 11h47
  3. passer en paramettre d'une fonction une fonction
    Par RoM3Ro dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/06/2006, 15h54
  4. passer une variable d'une fonction à une autre
    Par Psyion dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/12/2005, 16h01
  5. Réponses: 5
    Dernier message: 09/02/2005, 18h50

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