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