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 :

Faire apparaitre une edit box a l'aide d'un radio button


Sujet :

Interfaces Graphiques

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Par défaut Faire apparaitre une edit box a l'aide d'un radio button
    Bonjour a tous,

    Je me presente en deux mots : Etudiant en stage a l'etranger, j'ai realiser un boitier electronique commandant plusieurs "channels" et maintenant je dois le piloter a l'aide du logiciel MATLAB.

    Pour ce faire j'ai d'abord lu l'ensemble des tutoriels MATLAB concernant le GUI car je suis debutant et ensuite j'ai tailler dans le gras.

    Voici une representation de mon interface graphique en piece jointe.

    Mon souhait est de ne faire apparaitre la case "Number of Channel" seulement apres avoir selectionner l'un ou l'autre des radiobutton de "Input voltage".
    J'ai donc initialiser la visibilite de "Number of Channel" en off ainsi au demarrage elle n'est pas disponible.

    Puis j'ai baragouiner un bout de code afin de la rendre visible lors d'un appui mais ... voila ou j'ai besoin de votre aide

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    function varargout = tester(varargin)
    % TESTER M-file for tester.fig
    %      TESTER, by itself, creates a new TESTER or raises the existing
    %      singleton*.
    %
    %      H = TESTER returns the handle to a new TESTER or the handle to
    %      the existing singleton*.
    %
    %      TESTER('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in TESTER.M with the given input arguments.
    %
    %      TESTER('Property','Value',...) creates a new TESTER or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before tester_OpeningFcn gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to tester_OpeningFcn via varargin.
    %
    %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
    %      instance to run (singleton)".
    %
    % See also: GUIDE, GUIDATA, GUIHANDLES
     
    % Edit the above text to modify the response to help tester
     
    % Last Modified by GUIDE v2.5 28-Nov-2012 11:56:47
     
    % Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...
                       'gui_Singleton',  gui_Singleton, ...
                       'gui_OpeningFcn', @tester_OpeningFcn, ...
                       'gui_OutputFcn',  @tester_OutputFcn, ...
                       'gui_LayoutFcn',  [] , ...
                       'gui_Callback',   []);
    if nargin && ischar(varargin{1})
        gui_State.gui_Callback = str2func(varargin{1});
    end
     
    if nargout
        [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    else
        gui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT
     
     
    % --- Executes just before tester is made visible.
    function tester_OpeningFcn(hObject, eventdata, handles, varargin)
     
     
    % Choose default command line output for tester
    handles.output = hObject;
     
    % Update handles structure
    guidata(hObject, handles);
     
     
    % UIWAIT makes tester wait for user response (see UIRESUME)
    % uiwait(handles.figure1);
     
     
    % --- Outputs from this function are returned to the command line.
    function varargout = tester_OutputFcn(hObject, eventdata, handles) 
     
    varargout{1} = handles.output;%Select the number of channels
     
    % --- Executes on button press in OK.
    function OK_Callback(hObject, eventdata, handles)
     
     
    function Number_of_channel_Callback(hObject, eventdata, handles)
     
     
    % --- Executes during object creation, after setting all properties.
    function Number_of_channel_CreateFcn(hObject, eventdata, handles)
     
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
     
     
    % --- Executes during object creation, after setting all properties.
    function Number_of_channels_CreateFcn(hObject, eventdata, handles)
     
     
    % --- Executes on button press in OFF.
    function OFF_Callback(hObject, eventdata, handles)
     
     
    % --- Executes when selected object is changed in Input_Voltage.
    function Input_Voltage_SelectionChangeFcn(hObject, eventdata, handles)
    % hObject    handle to the selected object in Input_Voltage 
    % eventdata  structure with the following fields (see UIBUTTONGROUP)
    %	EventName: string 'SelectionChanged' (read only)
    %	OldValue: handle of the previously selected object or empty if none was selected
    %	NewValue: handle of the currently selected object
    % handles    structure with handles and user data (see GUIDATA)
        if hObject == Eighteen 
            set(Number_of_channels, 'visibility', 'on');
            set(OK, 'visibility', 'on');
            set(text373, 'visibility', 'on');
            set(Number_of_channel, 'visibility', 'on');
     
        elseif hObject == Seven_dot_Five
            set(Number_of_channels, 'visibility', 'on');
            set(OK, 'visibility', 'on');
            set(text373, 'visibility', 'on');
            set(Number_of_channel, 'visibility', 'on');
     
        else
            set(Number_of_channels, 'visibility', 'off');
            set(OK, 'visibility', 'off');
            set(text373, 'visibility', 'off');
            set(Number_of_channels, 'visibility', 'off');
        end
    Je precise que j'y suis depuis 9h ce matin et que j'ai deja lu une trentaine de sujet traitant de "visibilite" sur ce forum mais que je n'y arrive toujours pas.
    Images attachées Images attachées

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tous les handles des objets créés sous GUIDE sont contenus dans la structure handles passée en troisième argument des fonction callback.
    Ils sont donc accessibles sous la forme handles.<Tag>. <Tag> étant le nom que tu donnes à l'objet dans la propriété Tag.
    Plus précisément dans ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    handles.Number_of_channels
    handles.OK
    handles.text373
    handles.Number_of_channel

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Par défaut
    Merci de ta reponse, j'avais deja essaye cette commande en lisant les tuotoriels (d'ailleurs ce jerome c'est toi ?) mais ma fenetre refuse obstinement de s'ouvrir.

    J'ai essayer ces deux commandes par exemple :

    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
    % --- Executes when selected object is changed in Input_Voltage.
    function Input_Voltage_SelectionChangeFcn(hObject, eventdata, handles)
    % hObject    handle to the selected object in Input_Voltage 
    % eventdata  structure with the following fields (see UIBUTTONGROUP)
    %	EventName: string 'SelectionChanged' (read only)
    %	OldValue: handle of the previously selected object or empty if none was selected
    %	NewValue: handle of the currently selected object
    % handles    structure with handles and user data (see GUIDATA)
        if hObject == Eighteen 
            set(handles.Number_of_channels, 'visibility', 'on');
            set(handles.OK, 'visibility', 'on');
            set(handles.text373, 'visibility', 'on');
            set(handles.Number_of_channel, 'visibility', 'on');
            handles.Number_of_channels.visibility = true;
            handles.OK.visibility = true;
            handles.text373.visibility = true;
            handles.Number_of_channel.visibility = true;
    "Eighteen" etant le tag du radio button "18 V".

    Peut-etre ne suis-je pas au bon endroit.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Non, ce n'est pas moi, c'est Dut.
    Attention : ne jamais utiliser cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    handles.Number_of_channels.visibility = true;
    handles.OK.visibility = true;
    handles.text373.visibility = true;
    handles.Number_of_channel.visibility = true;
    Toujours passer par les fonctions get et set.

    La propriété rattachée à la visibilité est 'Visible' et non 'visibility'. Cf documentation.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Par défaut
    Effectivement erreur stupide de ma part pour visibility ... Utilisant le logiciel en anglais, j'ai betement traduit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    % --- Executes when selected object is changed in Input_Voltage.
    function Input_Voltage_SelectionChangeFcn(hObject, eventdata, handles)
    % hObject    handle to the selected object in Input_Voltage 
    % eventdata  structure with the following fields (see UIBUTTONGROUP)
    %	EventName: string 'SelectionChanged' (read only)
    %	OldValue: handle of the previously selected object or empty if none was selected
    %	NewValue: handle of the currently selected object
    % handles    structure with handles and user data (see GUIDATA)
        if hObject == Eighteen 
            set(handles.Number_of_channels, 'Visible', 'on');
            set(handles.OK, 'Visible', 'on');
            set(handles.text373, 'Visible', 'on');
            set(handles.Number_of_channel, 'Visible', 'on');
    Voila donc je ne garde que l'utilisation de la fonction 'set', malheureusement sa ne marche toujours pas. Peut-etre est-ce ma condition 'if' qui n'est pas bonne.

    P.S : J'en profite pour vous remercier de prendre le temps de me repondre, l'entreprise dans laquelle je travail ne s'occupe que de la partie electronique donc sur place personne ne peut m'aider.
    Et cela fais du bien de reparler un peu francais

  6. #6
    Invité
    Invité(e)
    Par défaut
    Essaye d'être plus explicite que "ça ne marche pas". Ça n'a jamais aidé personne.
    Message d'erreur entre autres.
    En tout cas, je ne vois rien de problématique ici...

    [EDIT]à part Eighteen qui n'est pas connu.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Par défaut
    Desole pour le tres celebre "ca ne marche pas".

    Le message d'erreur est le suivant, effectivement j'ai omis de vous en faire part.

    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
    ??? Undefined function or variable 'Eighteen'.
     
    Error in ==> tester>Input_Voltage_SelectionChangeFcn at 1303
        if hObject == Eighteen
     
    Error in ==> gui_mainfcn at 96
            feval(varargin{:});
     
    Error in ==> tester at 42
        gui_mainfcn(gui_State, varargin{:});
     
    Error in ==>
    @(hObject,eventdata)tester('Input_Voltage_SelectionChangeFcn',get(hObject,'SelectedObject'),eventdata,guidata(get(hObject,'SelectedObject')))
     
     
    Error in ==> hgfeval at 63
            feval(fcn{1},varargin{:},fcn{2:end});
     
    Error in ==> uitools.uibuttongroup.childAddedCbk>manageButtons at 80
        hgfeval(cbk, source, evdata);
     
    ??? Error while evaluating uicontrol Callback
    C'est ce message d'erreur qui me fait penser que ma condition IF ne doit pas etre bonne. Pour le moment lorsque j'appuie sur le bouton 18 V (tag correspondant : Eighteen), ma fenetre ne s'ouvre toujours pas, voila ce que je voulais dire.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Oui je l'ai mis en [EDIT], mon premier message est à relire

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 41
    Par défaut
    Ton troisieme message

    Effectivement, je viens de changer cette erreur de debutant (que je suis ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if hObject == handles.Eighteen
    Et maintenant quand je clique sur le bouton 18 V, la magie de l'informatique opere et ma fenetre tant desiree apparait. Bref j'ai fait un petit bond en criant "Youpi".

    Encore une fois merci, je vais continuer mon debroussaillage et reviendrai si un nouveau probleme se profil a l'horizon. Ce qui arrivera tot ou tard...

Discussions similaires

  1. Ajouter du texte dans une edit box
    Par raf_gug dans le forum MFC
    Réponses: 10
    Dernier message: 23/05/2013, 10h00
  2. Faire apparaitre une modal box
    Par thebarbarius dans le forum jQuery
    Réponses: 2
    Dernier message: 03/08/2011, 20h24
  3. Faire un Ctrl+C dans une edit box
    Par kacedda dans le forum MFC
    Réponses: 2
    Dernier message: 19/06/2007, 16h51
  4. [C#] Faire apparaitre une "button box" ?
    Par mavina dans le forum ASP.NET
    Réponses: 17
    Dernier message: 25/07/2005, 16h55
  5. [Plugin / Graphique] Faire apparaitre une fenêtre?
    Par relivio dans le forum Eclipse Platform
    Réponses: 7
    Dernier message: 31/03/2004, 19h10

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