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 :

callback et listbox


Sujet :

Interfaces Graphiques

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut callback et listbox
    Bonjour,

    J'ai un petit soucis. J'ai ajouté une fonction callback attaché à une liste box mais la fonction n'est pas appelée... Est-ce qu'il faut utilisé le terme 'callback' ou autre chose pour savoir quand le choix dans la liste a changé?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    listAU(i).h = uicontrol('style','listbox','units','pixels',...
                        'position',[110,y,100,14],'string',{'no change','on','off'},...
                        'min',1,'max',0,'Callback',{@storeCorrect,i});
     
    function storeCorrect(hObject, eventdata, i)
    global CERT
    modi = get(gco,'Value');
    disp('STORE CORRECT');
    i
    STORE CORRECT n'est pas affiché... est-ce à cause de mon argument i en paramètre?
    Merci.

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

    Non, c'est bien 'Callback' qu'il faut utiliser et tu l'as correctement lié, par contre je suis interpelé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    listAU(i).h = uicontrol('style','listbox','units','pixels',...
                        'position',[110,y,100,14],'string',{'no change','on','off'},...
                        'min',1,'max',0,'Callback',{@storeCorrect,i});
    où max < min.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    Oui il faut faire ça pour que l'utilisateur ne puisse sélectionner qu'un élément de la liste à la fois..

  4. #4
    Invité
    Invité(e)
    Par défaut
    La condition, c'est que Max - Min <= 1, mais pas pour autant que Max soit inférieur à Min.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    Ah oki.

    Alors j'ai mis Max à 1 et Min à 0 mais j'ai le même soucis...

  6. #6
    Invité
    Invité(e)
    Par défaut
    À part ceci je ne vois pas
    Obtiens-tu des messages d'erreur/avertissements ou autre ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    Non je n'ai aucun message d'erreur. Il ne passe pas du tout dans la fonction callback. Il n'affiche pas mes messages...

    Je ne comprends pas...

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    J'ai essayé d'utiliser ce callback sur une listbox en dehors de mon programme mais il semblerait que les callback ne sont pas pris en charge par les listbox alors qu'ils le sont par les popup par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function test
     
    h = uicontrol('style','popup','units','pixels',...
                        'enable','on','backgroundColor', 'b', 'Foreground', 'w', ...
                        'position',[110,400,200,100],'string',{'no change','on','off'},...
                        'min',0,'max',1,'Callback',@fn); 
     
    function fn(hObject, eventdata)
    disp('hihihi');
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function test
     
    h = uicontrol('style','listbox','units','pixels',...
                        'enable','on','backgroundColor', 'b', 'Foreground', 'w', ...
                        'position',[110,400,200,100],'string',{'no change','on','off'},...
                        'min',0,'max',1,'Callback',@fn); 
     
    function fn(hObject, eventdata)
    disp('hihihi');
    Le problème c'est que j'avais besoin d'utiliser une listbox pour que la hauteur du champ soit moins haute... Avec les popup même si je règle la 4ème valeur de 'position' le menu déroulant est toujours aussi haut... c'est trop haut pour mon interface..:-(

  9. #9
    Membre émérite
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Par défaut
    Bonjour,

    Bizarre, j'avoue... tu as essayé de créer une listbox la plus simple possible, sans paramètre ni rien ? Crées un fichier test en créant uniquement ta listbox et ton callback. Personnellement, je l'utilise aussi (sans toutes ces options) et ça marche, et j'ai une vieille version de matlab pourtant. Après, est-ce que ta machine java est à jour (si tu travailles sur un pc récent, normalement oui, tu n'as même pas besoin de te poser la question, mais si ce n'est pas le cas, il se peut que le problème vienne de là, bien que ce soit peu propable... mais je n'en sais pas plus)

    Et je n'ai pas non plus compris l'intérêt de min et max là... Teste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function test
        parent = figure;
        liste  = uicontrol('Parent', parent, 'Style', 'listbox', 'callback', @liste_callback);
     
        function liste_callback(varargin)
            1
        end
    end
    Normalement, en cliquant, tu as "1" qui s'affiche

    Cordialement,

Discussions similaires

  1. DrawItem d'un listbox...
    Par scorpiwolf dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/06/2007, 15h50
  2. [Listbox] ScrollBar Horizontal
    Par haleem dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/04/2005, 07h53
  3. Recuper les items de ListBox d'une autre application [API?]
    Par Shamanisator dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 27/09/2002, 12h32
  4. [Canvas] Listbox, couleur et multiselect
    Par rbag dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/09/2002, 13h02
  5. Copier le texte d'un ListBox dans le clipboard.
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/08/2002, 08h20

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