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 :

propriétés visible et parent de uipanel et listbox


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Par défaut propriétés visible et parent de uipanel et listbox
    Bonjour tout le monde,

    J'ai vu dans un post précédent que l'on pouvait :
    * Utiliser la fonction 'parent' sur les objets 'uipanel'
    et 'uicontrol listbox' de matlab
    * Utiliser la propriété 'visible' sur ces mêmes objets.

    J'ai donc construit un objet hpanel de type 'uipanel', puis un objet de type
    'listbox' en lui affectant la propriété ('parent', hpanel).

    Mon premier problème est que lorsque j'active cette propriété, la listbox n'est
    pas construite.

    Mon second problème est que, lorsque je définit hpanel comme ('visible', off),
    il reste visible.

    Et, aucune erreur n'apparaît!!

    Pour info, je code à la main et la partie de code qui me pose problème est la suivante (c'est une fonction appelée lors de l'appuie sur un toggle button):

    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
    % def hpanel ici visible off
    % ici je définit uipanel en ('visible','off') : pas de pb
    
    hpanel=uipanel(...
            'visible','off',...
            'units','normalized',...
            'position',[0 0.85-S*0.1 0.15 T*0.04]);
    
    if get(obj,'Value')
    
        for k=i-S+l:i-1
            it=it+1;
            set(handles(k),'position',[0.2 (S-l)*1.5-(1.5*(-k+i-1)) 37.5 1.5]);
        end
    
        % ici je rend hpanel visible : pas de pb
        set(hpanel,'visible','on');
        
        % rendre hpanel visible on 
        % def les check box ou list box comme enfants de hpanel
        
        % Ici, le fait de définir hpanel comme 'parent' à pour effet de ne pas 
        % afficher la listbox => pb
        handles(32)=uicontrol(...        
            'parent',hpanel,...
            'style','listbox',...    
            'visible','on',...
            'backgroundcolor',[1 1 1],...
            'units','characters',...
            'position',[0.2 34-(1.5*(T+S-it-1)+1) 37.5 1.5*(T+S-it-1)],...
            'string',char(var_met(2,:)));
    
    else
        
        % rendre hpanel visible off
        % Cette commande ne rend pas hpanel invisible => pb    
    
        set(hpanel,'visible','off'); 
        
        for k=i-S+l:i-1
            set(handles(k),'position',[0.2 34-(1.5*(-k+i+(l-1))+1) 37.5 1.5]);
        end
    end
    Merci par avance,
    Mary.

  2. #2
    Expert confirmé
    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
    Par défaut
    Pourrais-tu nous donner les valeurs des paramètres servant à définir les positions de tes objets ?

    Avec le morceau de code donné on ne peut malheureusement pas tester.

    As-tu essayé de faire des tests à plus petite échelle pour voir si tu reproduis le problème ?

    Exemple (qui fonctionne chez moi) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    hp=uipanel;
    hl=uicontrol('style','listbox','parent',hp,'pos',[10 10 100 400]);
    disp('appuyer sur une touche pour continuer');
    pause
    set(hp,'vis','off');
    disp('appuyer sur une touche pour continuer');
    pause
    set(hp,'vis','on');
    Au cas où c'est toujours bien de mentionner la version de MATLAB utilisée et l'OS.

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Par défaut
    Bonjour,

    Pour mes tests, j'ai pris T=2 et S=3.
    On peut prendre var_mat={'abc' 'dce'} pour tester, i=11, l=3.

    Mais je ne sais pas si ce sera testable, les codes précédents cette interface
    sont enormes.

    J'ai tester ces propriété sur un code indépendant que
    j'ai trouvé sur le forum et ca marche bien... mais sur mon code ca marche pas

    Ci dessous le petit code indépendant que j'ai testé et qui fonctionne.

    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
    clear, clc, close all;
    hFigure = figure;
     
    hPanel = uipanel(...    
        'Visible', 'on', ...      
        'Units','normalized',... 
        'Position', [0.1 0.1 0.8 0.8]);
     
    hList = uicontrol(...
        'Parent', hPanel, ...
        'Style','listbox', ...
        'Visible', 'on', ...
        'Units','normalized',...
        'Position',[0.9 0.5 0.2 0.04],...
        'String','coucou 1');
     
    hAxes = axes(...
        'Units', 'normalized', ...
        'Position', [0 0 0.5 0.5], ...
        'Visible', 'off');      
     
    % Ce trait est visible bine que les axes soient invisibles :
    hTrait = line([0.1 0.9], [0.1 0.9]);

  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
    Bonjour,

    Dans ton premier code, es-tu sûre que les valeurs que tu as prise pour la position de ta listbox est correct? Surtout que tu utilises des unités différentes pour chaque objet, ça ne facilite pas l'intégration

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Par défaut
    Bonjour,

    Oups... je vais vérifier...

    J'ai fais un 'mini test' de mon code avec :

    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
    function essai1
     
    % Création de l'objet Figure
    handles(2)=figure('units','pixels',...
        'position',[5 35 1270 690],...
        'numbertitle','off',...
        'name','[GUI] Editeur de scalaires - essai 2',...
        'menubar','figure',...
        'tag','interface');
     
    handles(2)=uicontrol('style','togglebutton',...
        'units','characters',...
        'position',[0.2 0.4 37.5 1.5],...
        'Callback',{@essai,handles},...
        'string','button');
     
    function essai(obj, event, handles)
     
    var_met={'abc' 'def'};
    S=3;
     
    it=0;
    T=size(var_met);
    T=T(2);
     
    % def hpanel ici visible off
    hpanel=uipanel(...
            'visible','off',...
            'units','normalized',...
            'position',[0 0.2 0.15 0.5]);
     
    if get(obj,'Value')
     
     
     
        set(hpanel,'visible','on');
     
        % rendre hpanel visible on
        % def les check box ou list box comme enfants de hpanel
     
        handles(3)=uicontrol(...
            'parent',hpanel,...
            'style','listbox',...
            'visible','on',...
            'backgroundcolor',[1 1 1],...
            'units','characters',...
            'position',[0.2 5 37.5 15],...
            'string',char(var_met));
     
    else
     
        % rendre hpanel visible off
        set(hpanel,'visible','off');
    end
    L'affichage de ma list box se fait bien mais l'invisibilité de hpanel et de la listbox ne marche toujours pas...

  6. #6
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Par défaut
    Merci, je vais verifier mes calculs de coordonnées.

  7. #7
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par maristil Voir le message
    L'affichage de ma list box se fait bien mais l'invisibilité de hpanel et de la listbox ne marche toujours pas...
    Juste un truc : tu te rends compte que tu crées un nouveau panel et une nouvelle listbox à chaque fois que tu appuies sur ton toggle bouton ?
    Donc ce n'est pas que le Visible Off ne fonctionne pas, c'est que le précédent uipanel reste affiché...

  8. #8
    Expert confirmé
    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
    Par défaut
    Il me manquait it que j'ai mis à 0.

    A mon avis c'est un problème de position, tu devrais revoir tes calculs (au moins pour le 1er problème de listbox).

    En m'"amusant" à modifier les unités (remises en pixels que je maitrise mieux) et les propriétés, j'ai finis par faire apparaitre la listbox (j'ai agrandi le panel et vérifié que la listbox était bien dans le uipanel).
    Le fait que la listbox "dépasse" du uipanel semble poser problème.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/12/2006, 11h37
  2. Réponses: 6
    Dernier message: 26/07/2006, 11h00
  3. utilisation propriété VISIBLE
    Par By-nôm dans le forum Access
    Réponses: 16
    Dernier message: 30/06/2006, 14h36
  4. Réponses: 2
    Dernier message: 06/06/2006, 12h09
  5. Propriété visible
    Par Mateache dans le forum Access
    Réponses: 20
    Dernier message: 07/03/2006, 18h10

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