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

Scilab Discussion :

GUI : utilise l'indice d'un objet dans un pushbutton


Sujet :

Scilab

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Ingénieur
    Inscrit en
    Février 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 1
    Points : 1
    Points
    1
    Par défaut GUI : utilise l'indice d'un objet dans un pushbutton
    Bonjour à tous.

    Je ne suis pas très expérimentée en informatique, et j'essai de développée une interface utilisateur. Voici le problème auquel je me heurte :

    Je définie k zones de texte et k boutons lors d'une boucle sur k.
    Je veux afficher quelque chose dans la zone de text(k), avec l'action du pushbutton(k).
    Et ça ne marche pas. Soit scilab me retourne "k undefined", soit rien, mais l'opération ne se fait pas.
    Quelqu'un aurait une piste?


    voilà comment j'essaye :

    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
    function []=fenetre_graphique2(h)
     
    for k=1:10
    VarTest='bonjour'
    txtbx_mask(k) = uicontrol(h, "style", "edit", ...
            "string", "masque des .flt",...
            "position", [20 500-(k-1)*20 250 40],...
            "HorizontalAlignment","left");
     
    btn_RepMask(k) = uicontrol(h, "style", "pushbutton",...
            "string", "Choisir un fichier",...
            "position", [300 500-(k-1)*20-40 50 40], ...
            "callback", "txtbx_mask(k).string=VarTest "...
             );
    end
     
    endfunction


    Merci à vous!

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

    De 1), les variables txtbx_mask, k et VarTest sont des variables locales à ta fonction, dès que tu en sors, elles n'existent plus.
    De 2), même si tu en fais des variables globales, l'écriture txtbx_mask(k).string=VarTest va prendre les valeurs de k et VarTest au moment où tu appuies sur le bouton. Soit très certainement les valeurs prises à la dernière itération.

    Tu peux commencer par remplacer txtbx_mask(k) par gcbo, qui représente le handle de l'objet dont la fonction callback est en train de s'exécuter, précisément ce que l'on cherche ici.
    Puis concaténer le contenu de VarTest à cette chaine, (sans oublier de l'entourer de guillemets afin de ne pas prendre la variable, mais son contenu : on voudra exécuter gcbo.string = "bonjour"; et non gcbo.string = bonjour;).
    On arrive alors à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        btn_RepMask(k) = uicontrol(h, "style", "pushbutton",...
                "string", "Choisir un fichier",...
                "position", [300 500-(k-1)*20-40 50 40], ...
                "callback", sprintf("gcbo.string=""%s""", VarTest)...
        );
    À l'avenir, et surtout pour exécuter des codes plus complexes, je te conseille d'utiliser des fonctions et non des chaines en tant que "callback".
    Voir ce sujet de la FAQ MATLAB (la syntaxe diffère un peu avec Scilab, mais le principe reste).

Discussions similaires

  1. Utilisation du borderLayout avec un objet dans un JscrollPane
    Par tupac25 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 01/06/2010, 11h51
  2. Réponses: 23
    Dernier message: 21/02/2007, 12h53
  3. [Debutant] Stocker des objets dans un tableau à plusieurs indices
    Par Invité dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 27/09/2006, 18h04
  4. [VBA-E]Utiliser un indice dans un nom d'objet
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/06/2006, 16h42
  5. [delphi 5,6,7] utiliser un objet dans une procédure
    Par wizdom dans le forum Langage
    Réponses: 3
    Dernier message: 27/01/2006, 15h38

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