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 valeur entre fonctions avec guidata


Sujet :

Interfaces Graphiques

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur mécanique
    Inscrit en
    Avril 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Passage de valeur entre fonctions avec guidata
    Bonjour à tous,

    J'ai jusqu'à présent trouvé toutes les réponses à mes questions... sauf pour celle-ci

    L'objet de ma fonction et de renvoyer une structure du type:
    new_projet.nom = nom;
    new_projet.liste_vis = [];
    new_projet.liste_ecrou = [];
    new_projet.liste_bille = [];
    Où seul le nom est défini (les autres champs doivent rester vide)
    (ou renvoyer un champs vide si on annule )

    Je cherche à ce que la fonction GUI_Nouveau_Projet.m me renvoie, après son éxecution, la valeur projet (que j'utiliserai dans une autre fonction). Mon soucis est la définition de cette valeur de projet.

    Dans un preimer temps, afin d'illustrer mes propos, voilà mon code:
    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
    function projet = GUI_Nouveau_Projet
    clc
     
    % Création de l'objet Figure
        figure('units','pixels',... 
            'color',[0.831 0.816 0.784],... 
            'numbertitle','off',...
            'name','Nouveau projet',... 
            'menubar','none',... 
            'resize','off',... 
            'tag','interface');
     
    % Création du texte "Nom de projet"
        uicontrol('style','text',...
            'units','pixels',...
            'fontsize',10',...
            'position',[20 80 180 20],...
            'horizontalAlignment','left',...
            'string','Nom du projet',...
            'tag','text');
     
    % Création de la zone de texte 
        uicontrol('style','edit',...
            'units','pixels',...
            'fontsize',10',...
            'position',[20 60 180 20],...
            'horizontalAlignment','left',...
            'string',[],...
            'tag','edit_nom_projet');
     
    % Création du bouton valider
        uicontrol('style','pushbutton',...
            'units','pixels',...
            'fontsize',10',...
            'position',[20 20 80 20],...
            'horizontalAlignment','left',...
            'string','Valider',...
            'tag','bouton_valider',...
            'callback',@valider);
     
    % Création du bouton Annuler
        uicontrol('style','pushbutton',...
            'units','pixels',...
            'fontsize',10',...
            'position',[120 20 80 20],...
            'horizontalAlignment','left',...
            'string','Annuler',...
            'tag','bouton_annuler',...
            'callback','uiresume(gcbf)');
     
    % Génération de la structure contenant les identifiants des objects graphiques dont la propriété Tag a été utilisée.
        data=guihandles(gcf);
     
    % D'après les Tag utilisés pour les objets graphiques crées précédemment, la structure data 
    % contient les champs suivant :
    %   data.interface
    %   data.text
    %   data.edit_nom_projet
    %   data.bouton_valider
    %   data.bouton_annuler
     
    % Initialisation de la variable représentant la valeur courante de la variable new_projet à []
    % Note : new_projet est ici un champ de la structure data
        data.new_projet = [];
     
    % Enregistrement de data dans les données d'application de l'objet Figure
        guidata(gcf,data)
     
        uiwait(gcf)
        projet = data.new_projet;
        close('Nouveau projet')
     
    %% MISE EN PLACE DES FONCTIONS DES OBJETS %%
     
    function valider(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);
     
    % Récupération du texte entré dans le champs de l'objet edit_nom_projet
        nom = get(data.edit_nom_projet,'string');
     
        new_projet.nom = nom;
        new_projet.liste_vis = [];
        new_projet.liste_ecrou = [];
        new_projet.liste_bille = [];
     
    % Enregistrement des données modifiées dans les données d'application de l'objet Figure
    % contenant l'objet graphique dont l'action est exécutée (gcbf)
        data.new_projet = new_projet;
        guidata(gcbf,data)
     
        uiresume(gcbf)
    Je rentre un nom de projet dans une zone de texte (ligne 23) que j'arrive à récupérer et mettre dans ma strucuture quand j'active le bouton_valider via la fonction valider (ligne 77 à 89)

    Mon problème survient lorsque je cherche à mettre à jour la veleur de data.new_projet dans ma fonction principale
    Pour mettre à jours cette variable, j'utilise guidata(gcf,data) (ligne 69) mais au final, ma fonction principale continue de me renvoyer l'initialisation de mon champs data.new_projet=[] (lignes 66 et 72)

    Afin de m'aider, j'ai consulté la FAQ sur le développement efficasse des GUI ainsi que différents posts sur le passage des variables de fonction, mais sans réussir à solutionner mon problème.

    Je n'ai pas de message d'erreur et possède la version 7.5.0(R2007b) de Matlab

    Vous souhaitant une bonne journée, je vous remercie d'avance pour votre aide
    Ursamajor

  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 304
    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 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Une solution :

    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
    function GUI_Nouveau_Projet
     
    % Création de l'objet Figure
    figure('units','pixels',...
        'color',[0.831 0.816 0.784],...
        'numbertitle','off',...
        'name','Nouveau projet',...
        'menubar','none',...
        'resize','off',...
        'tag','interface');
     
    % Création du texte "Nom de projet"
    uicontrol('style','text',...
        'units','pixels',...
        'fontsize',10',...
        'position',[20 80 180 20],...
        'horizontalAlignment','left',...
        'string','Nom du projet',...
        'tag','text');
     
    % Création de la zone de texte
    uicontrol('style','edit',...
        'units','pixels',...
        'fontsize',10',...
        'position',[20 60 180 20],...
        'horizontalAlignment','left',...
        'string',[],...
        'tag','edit_nom_projet');
     
    % Création du bouton valider
    uicontrol('style','pushbutton',...
        'units','pixels',...
        'fontsize',10',...
        'position',[20 20 80 20],...
        'horizontalAlignment','left',...
        'string','Valider',...
        'tag','bouton_valider',...
        'callback',@valider);
     
    % Création du bouton Annuler
    uicontrol('style','pushbutton',...
        'units','pixels',...
        'fontsize',10',...
        'position',[120 20 80 20],...
        'horizontalAlignment','left',...
        'string','Annuler',...
        'tag','bouton_annuler',...
        'callback',@annuler);
     
    % Génération de la structure contenant les identifiants des objects graphiques dont la propriété Tag a été utilisée.
    data=guihandles(gcf);
     
    % D'après les Tag utilisés pour les objets graphiques crées précédemment, la structure data
    % contient les champs suivant :
    %   data.interface
    %   data.text
    %   data.edit_nom_projet
    %   data.bouton_valider
    %   data.bouton_annuler
     
    % Initialisation de la variable représentant la valeur courante de la variable new_projet à []
    % Note : new_projet est ici un champ de la structure data
    data.new_projet = [];
     
    % Enregistrement de data dans les données d'application de l'objet Figure
    guidata(gcf,data)
     
    %% MISE EN PLACE DES FONCTIONS DES OBJETS %%
     
    function valider(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);
     
    % Récupération du texte entré dans le champs de l'objet edit_nom_projet
    nom = get(data.edit_nom_projet,'string');
     
    new_projet.nom = nom;
    new_projet.liste_vis = [];
    new_projet.liste_ecrou = [];
    new_projet.liste_bille = [];
     
    assignin('caller','new_projet',new_projet);
    close(gcbf)
     
    function annuler(obj, event)
    new_projet = [];
    assignin('caller','new_projet',new_projet);
    close(gcbf)
    Avec un exemple de fonction appelante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function test
     
    GUI_Nouveau_Projet;
     
    waitfor(gcf)
     
    whos
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur mécanique
    Inscrit en
    Avril 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Merci pour cette réponse claire et rapide

    Passer par le workspace pour envoyer une variable d'une fonction à un autre, c'est pas bête du tout... Fallait y penser.

    Bonne après midi,
    Ursamajor

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur mécanique
    Inscrit en
    Avril 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Juste une petite précision

    Mon programme, dans son utilisation finale, sera compilé pour pouvoir être utilisé sans passer par matlab

    Les passages par le worksapce pourront-ils toujours se faire? (C'est une question que mon tuteur m'a posé... la colle!)

    Sans vouloir trop en demander si je pouvais aussi avoir une explication sur l'erreur que j'ai fait dans mon script, ça pourrait m'aider à m'améliorer... Car je vais me servir souvent de guidata and cie

    Merci bien,
    Ursamajor

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Citation Envoyé par ursamajor Voir le message
    Les passages par le worksapce pourront-ils toujours se faire? (C'est une question que mon tuteur m'a posé... la colle!)
    Oui

    Citation Envoyé par ursamajor Voir le message
    Sans vouloir trop en demander si je pouvais aussi avoir une explication sur l'erreur que j'ai fait dans mon script, ça pourrait m'aider à m'améliorer... Car je vais me servir souvent de guidata and cie
    Chaque fonction possède son propre workspace.
    Donc dans ton premier code, il y a 2 variables data différentes. Une dans chaque fonction.

    Une autre solution aurait été d'utiliser des fonctions imbriquées :

    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
    function projet = GUI_Nouveau_Projet_nested
     
    % Création de l'objet Figure
    figure('units','pixels',...
        'color',[0.831 0.816 0.784],...
        'numbertitle','off',...
        'name','Nouveau projet',...
        'menubar','none',...
        'resize','off',...
        'tag','interface');
     
    % Création du texte "Nom de projet"
    uicontrol('style','text',...
        'units','pixels',...
        'fontsize',10',...
        'position',[20 80 180 20],...
        'horizontalAlignment','left',...
        'string','Nom du projet',...
        'tag','text');
     
    % Création de la zone de texte
    uicontrol('style','edit',...
        'units','pixels',...
        'fontsize',10',...
        'position',[20 60 180 20],...
        'horizontalAlignment','left',...
        'string',[],...
        'tag','edit_nom_projet');
     
    % Création du bouton valider
    uicontrol('style','pushbutton',...
        'units','pixels',...
        'fontsize',10',...
        'position',[20 20 80 20],...
        'horizontalAlignment','left',...
        'string','Valider',...
        'tag','bouton_valider',...
        'callback',@valider);
     
    % Création du bouton Annuler
    uicontrol('style','pushbutton',...
        'units','pixels',...
        'fontsize',10',...
        'position',[120 20 80 20],...
        'horizontalAlignment','left',...
        'string','Annuler',...
        'tag','bouton_annuler',...
        'callback',@annuler);
     
    % Génération de la structure contenant les identifiants des objects graphiques dont la propriété Tag a été utilisée.
    data=guihandles(gcf);
     
    % D'après les Tag utilisés pour les objets graphiques crées précédemment, la structure data
    % contient les champs suivant :
    %   data.interface
    %   data.text
    %   data.edit_nom_projet
    %   data.bouton_valider
    %   data.bouton_annuler
     
    % Initialisation de la variable représentant la valeur courante de la variable new_projet à []
    % Note : new_projet est ici un champ de la structure data
    data.new_projet = [];
     
    % Enregistrement de data dans les données d'application de l'objet Figure
     
    uiwait(gcf)
    projet = data.new_projet;
    close('Nouveau projet')
     
    %% MISE EN PLACE DES FONCTIONS DES OBJETS %%
     
        function valider(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)
     
            % Récupération du texte entré dans le champs de l'objet edit_nom_projet
            nom = get(data.edit_nom_projet,'string');
     
            new_projet.nom = nom;
            new_projet.liste_vis = [];
            new_projet.liste_ecrou = [];
            new_projet.liste_bille = [];
     
            % Enregistrement des données modifiées dans les données d'application de l'objet Figure
            % contenant l'objet graphique dont l'action est exécutée (gcbf)
            data.new_projet = new_projet;
     
            uiresume(gcbf)
     
        end
     
        function annuler(obj,event)
     
            uiresume(gcbf)
     
        end
     
    end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function test_nested
     
    projet = GUI_Nouveau_Projet_nested;
     
    fid = fopen('test.txt','wt');
    if ~isempty(projet)  
        fprintf(fid,'Nom projet : %s',projet.nom);
    else
        fprintf(fid,'Nom projet : <empty>');
    end
    fclose(fid);
     
    edit test.txt
    En modifiant légèrement le code ci-dessus, on peut facilement se passer de GUIHANDLES/GUIDATA

    Et un dernier conseil , comme tu comptes compiler ton interface graphique, il ne faut jamais utiliser de chaine de caractères pour les callback comme dans ton premier code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        uicontrol('style','pushbutton',...
            'units','pixels',...
            'fontsize',10',...
            'position',[120 20 80 20],...
            'horizontalAlignment','left',...
            'string','Annuler',...
            'tag','bouton_annuler',...
            'callback','uiresume(gcbf)');
    Ceci ne fonctionnera pas une fois compilé.
    Il faut toujours passer par des sous-fonctions ou des fonctions imbriquées (voir la sous fonction annuler dans mon code)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur mécanique
    Inscrit en
    Avril 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Merci pour ces précisions

    Citation Envoyé par Dut Voir le message
    Chaque fonction possède son propre workspace.
    Donc dans ton premier code, il y a 2 variables data différentes. Une dans chaque fonction.
    Je pensais que la fonction guidata(gcbf,data) permettait justement de mettre à jour la variable data dans le workspace de la première fonction.

    Citation Envoyé par Dut Voir le message
    Une autre solution aurait été d'utiliser des fonctions imbriquées :
    J'avais réussi à faire fonctionner mon code avec les fonctions imbriquées. Mais je me suis permis d'ouvrir ce sujet pour mieux comprendre pourquoi ça ne marchais pas (" l'expérience" , c'est comme ça que l'on nomme ses erreurs [Oscar Wilde] )

    Citation Envoyé par Dut Voir le message
    Et un dernier conseil , comme tu comptes compiler ton interface graphique, il ne faut jamais utiliser de chaine de caractères pour les callback comme dans ton premier code :
    [...]
    Il faut toujours passer par des sous-fonctions ou des fonctions imbriquées (voir la sous fonction annuler dans mon code)
    Merci du conseil, ça va m'éviter bien des erreurs par la suite.


    Encore merci pour ces éclaircissement
    Tu m'aura même éclairé sur l'utilisation de isempty... je mettais toujours isempty(X) == 0 ... avec une belle erreur toute rouge ^^

    Bonne fin de journée
    Ursamajor

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Citation Envoyé par ursamajor Voir le message
    Je pensais que la fonction guidata(gcbf,data) permettait justement de mettre à jour la variable data dans le workspace de la première fonction.
    Non, GUIDATA permet juste de stocker et de récupérer des données facilement.

    Il aurait d'ailleurs fallut ajouter une seule ligne à ton premier code pour le faire fonctionner correctement :

    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
    function projet = GUI_Nouveau_Projet
    clc
    
    % Création de l'objet Figure
    figure('units','pixels',...
        'color',[0.831 0.816 0.784],...
        'numbertitle','off',...
        'name','Nouveau projet',...
        'menubar','none',...
        'resize','off',...
        'tag','interface');
    
    % Création du texte "Nom de projet"
    uicontrol('style','text',...
        'units','pixels',...
        'fontsize',10',...
        'position',[20 80 180 20],...
        'horizontalAlignment','left',...
        'string','Nom du projet',...
        'tag','text');
    
    % Création de la zone de texte
    uicontrol('style','edit',...
        'units','pixels',...
        'fontsize',10',...
        'position',[20 60 180 20],...
        'horizontalAlignment','left',...
        'string',[],...
        'tag','edit_nom_projet');
    
    % Création du bouton valider
    uicontrol('style','pushbutton',...
        'units','pixels',...
        'fontsize',10',...
        'position',[20 20 80 20],...
        'horizontalAlignment','left',...
        'string','Valider',...
        'tag','bouton_valider',...
        'callback',@valider);
    
    % Création du bouton Annuler
    uicontrol('style','pushbutton',...
        'units','pixels',...
        'fontsize',10',...
        'position',[120 20 80 20],...
        'horizontalAlignment','left',...
        'string','Annuler',...
        'tag','bouton_annuler',...
        'callback',@annuler);
    
    % Génération de la structure contenant les identifiants des objects graphiques dont la propriété Tag a été utilisée.
    data=guihandles(gcf);
    
    % D'après les Tag utilisés pour les objets graphiques crées précédemment, la structure data
    % contient les champs suivant :
    %   data.interface
    %   data.text
    %   data.edit_nom_projet
    %   data.bouton_valider
    %   data.bouton_annuler
    
    % Initialisation de la variable représentant la valeur courante de la variable new_projet à []
    % Note : new_projet est ici un champ de la structure data
    data.new_projet = [];
    
    % Enregistrement de data dans les données d'application de l'objet Figure
    guidata(gcf,data)
    
    uiwait(gcf)
    
    data = guidata(gcf);
    
    projet = data.new_projet;
    close('Nouveau projet')
    
    %% MISE EN PLACE DES FONCTIONS DES OBJETS %%
    
    function valider(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);
    
    % Récupération du texte entré dans le champs de l'objet edit_nom_projet
    nom = get(data.edit_nom_projet,'string');
    
    new_projet.nom = nom;
    new_projet.liste_vis = [];
    new_projet.liste_ecrou = [];
    new_projet.liste_bille = [];
    
    % Enregistrement des données modifiées dans les données d'application de l'objet Figure
    % contenant l'objet graphique dont l'action est exécutée (gcbf)
    data.new_projet = new_projet;
    guidata(gcbf,data)
    
    uiresume(gcbf)
    
    function annuler(obj,event)
    
    uiresume(gcbf)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur mécanique
    Inscrit en
    Avril 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    D'accord, je comrpends beaucoup mieux comme manipuler cet outil maintenant.

    Cela va bien me me servir pour la suite, merci beaucoup pour avoir pris le temps de m'éclaircir les points obscurs.

    @ bientôt =)
    Ursamajor

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

Discussions similaires

  1. passage de valeur entre deux pages avec a href
    Par phenix1988 dans le forum Langage
    Réponses: 9
    Dernier message: 14/03/2011, 16h52
  2. [C#] Passage de valeur entre classes
    Par Neitsa dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/05/2006, 12h57
  3. Passage de pointeurs entre fonctions
    Par mickael.be dans le forum Langage
    Réponses: 3
    Dernier message: 02/01/2006, 21h01
  4. transfert de valeurs entre fonctions js et asp
    Par ericmart dans le forum ASP
    Réponses: 5
    Dernier message: 10/03/2005, 16h18
  5. Passage de valeurs entre fenêtres différentes
    Par Amnesiak dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/02/2005, 15h10

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