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 :

Gérer un gui qui appelle un autre gui


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Par défaut Gérer un gui qui appelle un autre gui
    Bonjour

    J'ai une question assez difficile (me semble-t-il) concernant un gui "père" qui comporte un bouton permettant d'ouvrir un gui "fils". Mon problème est que je voudrais écrire le programme de manière à ce que le gui "fils" ne puisse s'ouvrir qu'une seule fois, même si on appuie plusieurs fois sur le bouton.

    --------------------------

    Voici le programme "fils", qu'il faut mettre dans un fichier intitulé "fils.m". Ce programme ouvre une figure qui comporte un bouton "Retour", lorsqu'on appuie sur ce bouton la figure se ferme. C'est tout.

    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
     
    function fils
    hFigure = figure(...
        'NumberTitle', 'off', ...
        'Name', 'Fils', ...
        'Menubar', 'none', ...
        'Units', 'normalized', ...
        'Position', [rand/2 rand/2 0.2 0.2]);
     
    uicontrol(...
        'Style', 'pushbutton', ...
        'String', 'Retour',...
        'Units', 'normalized', ...
        'CallBack', {@retour}, ...
        'Position', [0.4 0.4 0.2 0.2]);
     
    uiwait(hFigure);
    close(hFigure);
     
    function retour(source, eventdata)
        uiresume(gcbf);
    end
     
    end

    --------------------------

    Voici le programme "Père", qu'il faut mettre dans un fichier intitulé "père.m". Ce programme ouvre une figure qui comporte deux boutons intitulés "Fin" et "Fils". Le premier permet de fermer la fenêtre et d'arrêter le programme. Le second permet d'appeler le programme fils ci-dessus.

    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
    function pere
    hFigure = figure(...
        'NumberTitle', 'off', ...
        'Name', 'Père', ...
        'Menubar', 'none', ...
        'Visible', 'off', ...
        'Position', [0 0 400 300]);
    movegui(hFigure, [-1, -1]);
    set(hFigure, 'Visible', 'on');
     
    uicontrol(...
        'Style', 'pushbutton', ...
        'String', 'Fin',...
        'Units', 'normalized', ...
        'CallBack', {@Fin}, ...
        'Position', [0.3 0.4 0.2 0.2]);
     
    uicontrol(...
        'Style', 'pushbutton', ...
        'String', 'Fils',...
        'Units', 'normalized', ...
        'CallBack', {@Fils}, ...
        'Position', [0.5 0.4 0.2 0.2]);
     
    uiwait(hFigure);
    close(hFigure);
     
    function Fin(source, eventdata)
        uiresume;
    end
     
    function Fils(source, eventdata)
        fils;
    end
     
    end
    Tels que sont écrits les programmes, si on appuie plusieurs fois sur le bouton "Fils" du gui père, plusieurs fenêtres "Fils" s'ouvrent. Comment faire pour que cela ne se produise pas ? Je tourne en rond depuis ce matin ...

    Merci de votre aide.
    Pierre

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Une solution:
    - Tu définis le Tag de la figure enfant.
    - Avant d'ouvrir la figure enfant, tu recherches ce Tag à l'aide de FINDOBJ
    - Si le résultat est vide, tu peux ouvrir la fenêtre enfant (il n'en existe pas d'autre)

    Bon courage,
    Duf

  3. #3
    Membre confirmé Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Par défaut
    Bonjour DUf

    Merci je vais faire cela. J'avais trouvé une autre méthode mais je ne sais pas ce qu'elle vaut, elle consiste à écrire ela dans la fonction callback :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function Fils(source, eventdata)
        set(hFils, 'Callback',{});
        fils;
        set(hFils, 'Callback',{@Fils});
    end
    Qu'en penses-tu ?

    ------------------

    J'ai une question subsidiaire. Mon application réelle est un peu plus compliquée que l'exemple que j'ai donné car en fait il y a plusieurs gui fils (c'est une famille nombreuse :o), qu'on peut appeler fils_1, fils_2 ... fils_n. Dans le gui père il y a n boutons pour ouvrir l'un des fils au choix. Ce que je voudrais c'est empêcher l'ouverture de plus d'un fils à la fois. Vois-tu une autre méthode pour ce cas là ? Où bien est-ce la même ?

    Cordialement,
    Pierre

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Une solution peut-être de passer le WindowStyle de tes fenêtres fils à modal, dans ce cas tu ne peux normalement plus accéder à la fenêtre parent tant que le fils est ouvert, çà à l'air de correspondre à l'usage que tu veux en faire...

  5. #5
    Membre confirmé Avatar de Pierrot92320
    Homme Profil pro
    Ingénieur en retraite (électronique)
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur en retraite (électronique)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Par défaut
    Super ! C'est exactement ça. Tu es un génie merci.

    Pierre

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

Discussions similaires

  1. Réponses: 23
    Dernier message: 30/06/2007, 18h14
  2. Appel d'un GUI fils à partir d'un GUI parent
    Par AsmaHaj dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 24/03/2007, 10h32
  3. servlet qui appelle une autre
    Par kam81 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 06/11/2006, 16h14
  4. [Debutant] Formulaire qui appel un autre formulaire
    Par anassyto dans le forum Access
    Réponses: 6
    Dernier message: 31/07/2006, 12h10
  5. Procedures stockées qui appellent un autre ?
    Par Tchinkatchuk dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 09/05/2005, 09h30

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