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 :

Fermeture d'interface à partir d'une autre interface


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Points : 63
    Points
    63
    Par défaut Fermeture d'interface à partir d'une autre interface
    Voila mon ch'ti problème....

    j'ai une première interface (IHM.m et IHM.fig) avec (entre autre) un bouton "Open" qui permet d'ouvrir une image dans cette première gui.

    je fais tout un tas de traitement, puis je lance une deuxième interface (tabGUI.m et tabGUI.fig) en faisant bêtement un

    ce qui m'ouvre bien ma deuxième IHM. Ce que je voudrais maintenant, c'est fermer cette deuxième IHM quand j'appui à nouveau sur le bouton "Open" de ma première IHM (première gui qui devient la gui courante vu que je lui appuie sur le bouton 'open').

    J'ai plusieurs idée mais je ne sais pas comment les appliquer
    ->nommer la deuxième IHM avec un nom dans le fichier de ma première IHM, puis faire un exist dans le code du bouton open
    ->faire un test pour savoir combien de fenêtre sont ouvertes, et supprimer toutes celles qui ne sont pas des fenêtres courantes

    si quelqu'un peut m'aider, ça serait cool

  2. #2
    Expert éminent sénior
    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
    Points : 14 828
    Points
    14 828
    Par défaut
    Il y a en effet plein de possibilités.
    L'une d'entre elles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    handleTabGUI = tabGUI;%retourne le handle : 
    %n° d'identification unique de la fenêtre
     
    %et du coup quand tu veux le fermer :
    close(handleTabGUI);%ou delete(handleTabGUI);
    Par contre il y a de fortes chances que tu souhaites fermer la fenêtre dans une partie de code où la variable n'est pas connue, dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    handleTabGUI = tabGUI;%retourne le handle : 
    %n° d'identification unique de la fenêtre
    handles.handleTabGUI = handleTabGUI 
    guidata(hObject, handles);%mise à jour
     
    %et donc après :
    if ishandle(handles.handleTabGUI) %vérifie que le handle existe toujours
    close(handles.handleTabGUI);
    end

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Points : 63
    Points
    63
    Par défaut
    bonne idée (et merci de la rapidité de la réponse ^___^)

    par contre, il y a effectivement un problème

    ??? Reference to non-existent field 'handleTabGUI'.

    Error in ==> IHM>OPEN_PUSHBUTTON_Callback at 52
    if ishandle(handles.handleTabGUI)
    En effet, je lance ma première interface, j'appuie sur le bouton "open" pour ouvrir mon image... c'est là que devrait être le code de destruction de la deuxième fenêtre, mais lors de la première intialisation, cette deuxième fenêtre n'existe pas (donc handle pas mis à jour et pas créé tout bêtement), et la fonction ishandle semble planter à ce niveau...

  4. #4
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Points : 63
    Points
    63
    Par défaut
    tiens un truc sympa

    je fais un petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exist(handles.handleTabGUI, 'var')
    pour vérifier que ma variable existe (ou pas), et matlab me sort une erreur en disant

    ??? Reference to non-existent field 'handleTabGUI'.

    Error in ==> IHM>OPEN_PUSHBUTTON_Callback at 55
    exist(handles.handleTabGUI, 'var')
    c'est déjà bien, il repère que la variable n'a pas encore été créée, mais j'aurai préféré un autre résultat qu'un plantage...

    alors que si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exist('handles.handleTabGUI','var')
    le résultat est toujours 0 (variable n'existe pas) car matlab cherche une variable s'appellant handles.handleTabGUI alors que c'est censé être une référence à la varialble handleTabGUI....


    EDIT: bon je m'en suis finalement sorti en testant une autre solution...

    en gros...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    handleTabGUI = tabGUI;
    handles.handleTabGUI = handleTabGUI;
    guidata(hObject, handles);
    tabGUIFlag = true;
    setappdata(hGui,'tabGUIFlag',tabGUIFlag);
    puis dans le code du bouton 'open'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if isappdata(hGui,'tabGUIFlag')
        close(handles.handleTabGUI);
    end

  5. #5
    Expert éminent sénior
    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
    Points : 14 828
    Points
    14 828
    Par défaut
    Oui les appdata c'est bien aussi.
    Sinon pour vérifier qu'un champ d'une structure existe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if isfield(handles,'handleTabGUI')

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

Discussions similaires

  1. [XL-2007] Ouverture /macro/ fermeture d'une feuille à partir d'une autre..
    Par ericmicro dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/03/2014, 12h11
  2. Appel d'interface a partir d'une autre classe
    Par harris_macken dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 20/07/2009, 15h31
  3. [c#]fermeture d'une form à partir d'une autre
    Par AmineDev9 dans le forum C#
    Réponses: 11
    Dernier message: 06/03/2009, 14h04
  4. Réponses: 3
    Dernier message: 08/06/2007, 09h50
  5. modifier une interface à partir d'une autre
    Par danathane dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 01/04/2007, 12h47

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