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 :

Problème pour afficher une valeur dans une textbox


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de neodole
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Avril 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 32
    Par défaut Problème pour afficher une valeur dans une textbox
    Bonjour à tous,

    Je souhaite réaliser une interface qui viendrait charger un fichier .mat et afficher dans plusieurs textbox le contenu de certaines variables contenu dans ce fichier.
    Pour cela, j'ai créé une interface à l'aide de GUIDE et j'y ai positionné un bouton donc j'ai renseigné le callback comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    hObject=Fcn_LoadCtrlMFile(); %% Fonction qui m'ouvre une fenêtre de sélection de fichier
     
    % Sauvegarde fichier chargé dans le workspace
    assignin('base','File1',hObject);
    Jusque-là tout va bien et le contenu du .mat est enregistré dans le workspace sous le nom de variable File1.

    Ensuite, j'ai mis une textbox 'Edit1' dans laquelle je souhaite mettre une valeur contenue dans File1. J'ai donc ajouté une fonction de cette Textbox comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    % --- Executes during object creation, after setting all properties.
    function edit1_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to edit1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called
     
    % Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
     
    a=evalin('base','File1.UserData.Gain');
    set(hObject,'String',num2str(a));
    Je commence par charger la variable qui se situe dans le workspace à l'aide de la fonction evalin. Puis je set sa valeur numérique.

    Le problème que je rencontre, c'est que cette étape doit être conditionner par l'exécution du bouton et donc en réalité, à la première exécution la TextBox est vide puis au chargement suivant la valeur de la variable apparait. Je ne sais pas comment lier le set de la TextBox à l'appui sur le bouton, ou plus précisément au chargement du File1.

    Pourriez-vous m'aider?
    Merci d'avance
    Neodole

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Tu n'as pas besoin de copier les données dans le workspace de MATLAB, tu peux te servir de la structure handles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    handles.File1 = Fcn_LoadCtrlMFile(); %% Fonction qui m'ouvre une fenêtre de sélection de fichier
     
    guidata(hObject, handles);
    Le reste de la question est assez confuse…

  3. #3
    Membre averti Avatar de neodole
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Avril 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 32
    Par défaut
    Bonjour,

    Merci pour votre répondre. Je n'avais pas bien compris le principe des handles. Maintenant ça va mieux. J'arrive à ouvrir un fichier à partir d'un bouton. J'ai également ajouté des "static text" dans mon interface et utilisé des "set" pour y charger des valeurs. En revanche, je suis actuellement bloqué sur un la déclaration du "handles" d'un "set".
    Pour faire simple: j'ai mis plusieurs "set" pour l'écriture de "String" dans des "static text" et j'ai donc une suite de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set(handles.text1,"String","blabla")
    set(handles.text2,"String","blabla")
    set(handles.text3,"String","blabla")
    ...
    J'ai un vingtaine de set et je pensai donc faire une concaténation de string et une boucle pour ne faire qu'une seul ligne d'instruction ce qui me donnerait quelques choses comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    k=1;
    while (k<20)
    set(['handles.text' num2str(k)],"String","blabla");
    end
    Comme vous devez vous en doutez, j'ai une erreur car ce type de syntaxe dans un "set" n'ai pas autorisé. Donc, je voudrai savoir si vous connaissez une manière qui pourrait répondre à mon problème.

    Merci d'avance.

    Neodole

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Il faut utiliser des champs dynamiques de structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(handles.(['text' num2str(k)]), 'String', 'blabla');
    Voir la FAQ : Qu'est-ce qu'un champ dynamique de structure ?

  5. #5
    Membre averti Avatar de neodole
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Avril 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 32
    Par défaut
    Super. Merci beaucoup. J'étais pas loin. J'avais juste oublié les parenthèses pour encadrer les crochets...

    Bonne soirée
    Neodole

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/03/2016, 14h14
  2. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  3. Réponses: 6
    Dernier message: 02/03/2011, 16h04
  4. Réponses: 2
    Dernier message: 10/04/2008, 11h48
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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