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 :

Probleme onglet (proprieté visible on/off) superposition de courbe


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut Probleme onglet (proprieté visible on/off) superposition de courbe
    Bonjour

    J'ai essayé de faire des onglets en utilisant la propriété des objets: visible on/off.

    Ça marche très bien jusqu'à que je trace des graphiques dans ces objets qui sont des axes. Lorsque je fais cela, les graphiques se superposent et la courbe du dernier onglet reste toujours active (par exemple pour le zoom).

    Voici mon problème en image :




    Étant donné que mon code est toufu j'ai rien mis dans mon post pour l'instant mais je le ferai avec plaisir sur demande

    Et sur les deux derniers onglets le zero n'est plus centré.

    Si vous avez des suggestions, je suis tout ouïe.

  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,

    En effet il serait intéressant de voir ton code (commenté si possible).

    Bonne journée,
    Duf

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut
    Ok je me lance

    Je vais essayer d'organiser ca clairement :

    Initialisation :
    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
     
    % --- Executes just before wave1 is made visible.
    function Wave_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to wave1 (see VARARGIN)
     
    % Choose default command line output for wave1
    global canalactif
     
    handles.output = hObject;
     
    % Variable determinant quel onglet est actif. Valeur initial CH1
    canalactif='CH1';
     
    % Groupement des differents figures qui constituent les onglets sous le nom
    % onglet.CHi. Initialement seul l'onglet CH1 est visible.
    handles.ongletCH1 = [ handles.axes1, handles.axes2, handles.axes3 ];
    handles.ongletCH2 = [ handles.axes11 ];
    set(handles.ongletCH2, 'Visible', 'off');
    handles.ongletCH3 = [ handles.axes21 ];
    set(handles.ongletCH3, 'Visible', 'off');
     
    % Update handles structure
    guidata(hObject, handles);
    Ouverture des fichiers :
    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
     
    % --- Executes on button press in Parcourir.
    function Parcourir_Callback(hObject, eventdata, handles)
    % hObject    handle to Parcourir (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    global PathName1 coupersignal CH1 CH2 CH3
     
    % Apelle la fonction nomfichier() qui permet à l'utilisateur de selectionner
    % dans quel repertoire sont contenue ses données. La fonction identifie
    % quel fichier correspond à quel canal.
    [CH1,CH2,CH3,PathName1]=nomfichier();
     
    %Affiche le nom du repertoire dans l'editbox
    set(handles.wave1,'String',PathName1); 
     
    %Indique que le signal doit etre pris dans son ensemble (sécurité, quand
    %cette valeur est = à 1 le signal est redimensionné)
    coupersignal = 0;
    Code exécutait lors de l'appuie sur le bouton de l'onglet CH1 :
    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
     
    % --- Executes on button press in CH1.
    function CH1_Callback(hObject, eventdata, handles)
    % hObject    handle to CH1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    global canalactif
     
    %Indique que le canal actif est CH1
    canalactif='CH1';
     
    %Rend visible l'onglet CH1
    set(handles.ongletCH1, 'Visible', 'on');
     
    %Rend invisible l'onglet CH2
    set(handles.ongletCH2, 'Visible', 'off');
     
    %Rend invisible l'onglet CH3
    set(handles.ongletCH3, 'Visible', 'off');
     
    %Change le titre du cadre contenant les axes
    set(handles.cannaux, 'Title', 'CH1');
    Le code exécutait lors de l'appuie sur les boutons des onglets CH2 et CH3 est sensiblement le même :

    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
     
    % --- Executes on button press in CH2.
    function CH2_Callback(hObject, eventdata, handles)
    % hObject    handle to CH2 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    global canalactif
    canalactif='CH2';
    set(handles.ongletCH1, 'Visible', 'off');
    set(handles.ongletCH2, 'Visible', 'on');
    set(handles.ongletCH3, 'Visible', 'off');
    set(handles.cannaux, 'Title', 'CH2');
     
     
    % --- Executes on button press in CH3.
    function CH3_Callback(hObject, eventdata, handles)
    % hObject    handle to CH3 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    global canalactif
    canalactif='CH3';
    set(handles.ongletCH1, 'Visible', 'off');
    set(handles.ongletCH2, 'Visible', 'off');
    set(handles.ongletCH3, 'Visible', 'on');
    set(handles.cannaux, 'Title', 'CH3');
    Et enfin le code permettant d'afficher des courbes dans les axes :
    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
     
    % --- Executes on button press in affsignal.
    function affsignal_Callback(hObject, eventdata, handles)
    % hObject    handle to affsignal (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    global CH1 CH2 CH3 PathName1 y1 Fe N canalactif
     
    if strcmpi(canalactif,'CH1'); %Verifie que le canal actif est CH1
        courbe=handles.axes1;     %Indique que c'est dans l'axes1 qui appartient à l'onglet ch1 qu'il faut tracer la courbe
        FileName = CH1;           %Indique le nom du fichier correspondant à CH1
        color='r';                %Couleur correspondant à CH1
    elseif strcmpi(canalactif,'CH2');
        courbe=handles.axes11;
        FileName = CH2;
        color='b';
    elseif strcmpi(canalactif,'CH3');
        courbe=handles.axes21;
        FileName = CH3;
        color='g';
    end
    [y1,Fe,t,N]=signal(FileName,PathName1);    %Apelle la fonction signal
    plot(courbe,t,y1,color);                 %Trace la courbe
    grid(courbe,'on');                 %Rajoute un cadrillage
    xlabel(courbe,'Temps(s)');         %Ajoute une légende sur x
    ylabel(courbe,'Amplitude m/s²');   %Ajoute une légende sur y
    title(courbe,FileName);           %Ajoute un titre à la figure
    zoom(courbe,'on')                  %Active automatique le zoom
    Je pense que j'ai mis trop de code, mais comme je sais pas du tout d'où peut provenir mon problème, j'ai mis tout ce qui touché aux onglets.
    Bonne lecture

  4. #4
    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
    Beuha, des variables globales, c'est le mal

    Et sinon on pourrait voir ce que tu as mis dans les différents handles.axes<n> ?


    Sinon il y a plus simple que de rendre à chaque fois tout invisible, il faut rendre tes objets enfant de l'objet UIPANEL, et dans ce cas, rendre le UIPANEL invisible rend ses enfants invisibles

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 26
    Par défaut
    Qu'entends tu par ce que j'ai mis dans mes handles.axe<n> ?
    Tu veux que je mette le code appelé par la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [y1,Fe,t,N]=signal(FileName,PathName1);
    qui se trouve dans le dernier bout de code de mon second poste ?


    Sinon je vais essayer de faire ce que tu me conseille pour les UIPANEL.

    Quant au variable global, je vois pas trop comment faire autrement

  6. #6
    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
    Il y a toujours une meilleure méthode que les variables globales (dans MATLAB en tout cas), les 3 principales sont exposées dans ce tutoriel

  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 Robin-a Voir le message
    Qu'entends tu par ce que j'ai mis dans mes handles.axe<n> ?
    Tu veux que je mette le code appelé par la fonctionD
    Non je veux dire le code qui t'a permis de créer les axes, là où il doit y avoir écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    handles.axes1 = ....%???
    etc.

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

Discussions similaires

  1. [VBA-E] Probleme avec proprièté formula
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/11/2006, 22h33
  2. Probleme validation propriété en mso-*
    Par guandal dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 25/10/2006, 17h22
  3. Evolution: ToolBar Visibility On/Off
    Par Jeweller dans le forum XMLRAD
    Réponses: 2
    Dernier message: 20/06/2006, 14h09
  4. [VB]propriete visible d'un controle
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 22/04/2006, 19h28
  5. [BCB6] Probleme onglet dans IDE
    Par bgautier dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/01/2004, 16h20

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