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 :

Liste de checkbox & callback


Sujet :

Interfaces Graphiques

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Points : 35
    Points
    35
    Par défaut Liste de checkbox & callback
    bonsoir,
    voici ce qui m'occupe !
    une matrice de +- 50 lignes comporte 5 colonnes.
    je souhaite afficher un label de la 3 eme colonne et un checkbox de la 4 eme colonne
    et ce pour les lignes existantes
    la 3eme colonne est le le nom
    et je dis en 4 eme colonne si le nom existe ou pas (0 1)

    je crée un gui
    j affiche les noms et les checkbox
    cela a l'air de marcher en écran !

    ou cela se corse c est à la fin du code la ou j'ai placé le callback que j'ai nommé "mafonction"
    en fait je souhaite ,à partir du gui, cocher ou décocher les checkbox.
    cela fonctionne sur le gui mais comment récupérer les nouvelles valeurs modifiées sur l'écran
    de sorte que la colonne numéro 4 soit remise a jour.

    je joins le bout de code

    quelqu'un peut il m' aider
    merci

    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
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    clc;clear;
    %   ==================================
    %   LISTE DES CONNECTEURS
    %   ==================================
    m20 = [...
        25.4   101.6    0310   1 1
        25.4   203.2    0320   1 1
        50.8   101.6    0510   1 1
        50.8   127.0    0513   1 1
        50.8   152.4    0515   1 1
        50.8   177.8    0518   1 1
        76.2   101.6    0810   0 1
        76.2   127.0    0813   0 1
        76.2   152.4    0815   0 1
        76.2   177.8    0818   0 1
        76.2   203.2    0820   0 1
        76.2   254.0    0825   1 1
        76.2   304.8    0830   1 1
        89.5   101.6    0910   1 1    
        89.5   152.4    0915   1 1    
        89.5   203.2    0920   1 1    
        89.5   254.0    0925   1 1    
       101.6   101.6    1010   1 1
       101.6   127.0    1013   1 1
       101.6   152.4    1015   1 1
       101.6   177.8    1018   1 1
       101.6   203.2    1020   1 1
       101.6   254.0    1025   1 1
       101.6   304.8    1030   1 1
       127.0   101.6    1310   1 1
       127.0   127.0    1313   1 1
       127.0   152.4    1315   1 1
       127.0   177.8    1318   1 1
       127.0   203.2    1320   1 1
       127.0   254.0    1325   1 1
       127.0   304.8    1330   1 1
       152.4   152.4    1515   1 1 
       152.4   177.8    1518   1 1 
       152.4   203.2    1520   1 1         
       152.4   254.0    1525   1 1 
       152.4   304.8    1530   1 1
       203.2   203.2    2020   1 1
       203.2   254.0    2025   1 1
       203.2   304.8    2030   1 1
       203.2   356.0    2035   1 1
       203.2   406.0    2040   1 1
       229.0   203.2    2320   1 1   
       229.0   254.0    2325   1 1   
       229.0   304.8    2330   1 1   
       229.0   356.0    2335   1 1   
       229.0   406.0    2340   1 1
       ];			 
    % ==============
    % CALC H FIGURE
    %===============
    yourscreen=get(0, 'screensize');
     
    %   hmatrix = [...
    %   q m20             ,q m20h            ,q m20special ,q m14 ,q m16h
    %   ]
    hmatrix1=[...
             size(m20,1)
             ];
    % hmatrix2 = [...
    %   your screen width ,your screen height, 0 , 0 , 0
    %   0                 ,h first interline , 0 , 0 , 0
    %   h line 1          ,h inter line 1    , 0 , 0 , 0 
    %   ]
    hmatrix2=[...
             yourscreen(1,3), yourscreen(1,4), 0,  0,  0 ;
             0              , 8              , 0,  0,  0 ;
             10             , 6              , 0,  0,  0 ;
             ];  
    hmatrix3=[...
    hmatrix2(2,2)+(hmatrix2(3,1)+hmatrix2(3,2) )*size(m20,1),...
    ];
     
    % hmatrix4 =
    hmatrix4=[...
               ];
    %   ==================================
    %   CREATE FIGURE
    %   ==================================
    hf1=840;
    lf1=10;rf1=10;wf1=300;
    posfig1=[lf1,rf1,wf1,hf1];
     
    fig1=figure('units','pixels',...
        'position',[250 250 500 500],...
        'color',[0.8 0.8 0.8],...
        'numbertitle','off',...
        'name','PLATING M20',...
        'position' , posfig1,...
        'menubar','none',...
        'tag','interface');  
    %   ==================================
    %   CREATE TEXT & CHECK BOX ON FIGURE
    %   ==================================                     
    b=hf1;
    l=10;b;w=30;h=15;
    im20=hmatrix1(1,1);
    for i=1:1:im20
        val(i)= m20(i,4);
        if val(i) == 0
            f1_enable='off'; % plate on the list
        else
            f1_enable='on'     ;% plate off the list
        end
    label_1(i) = uicontrol( fig1 , 'style' , 'text' , ...
                                 'units' , 'pixels', ...
                                 'position' , [l,b-i*17,w,h] ,...
                                 'HorizontalAlignment','left',...    
                                 'string' , m20(i,3),...
                                 'fontname', 'couriernew', ...
                                 'fontsize', 8, ...
                                 'fontweight', 'bold',...
                                 'backgroundcolor',[0.8 0.8 0.8], ...
                                 'foregroundcolor',[0 0 0],...
                                  'enable',f1_enable);  
     
    checkbox_1(i) = uicontrol( fig1 , 'style' , 'checkbox' ,...
                                'units' , 'pixels', ...
                                'Position' ,[l+50,b-i*17,15,h] ,...
                                'fontname', 'couriernew', ...
                                'fontsize', 8, ...
                                'fontweight', 'bold',...
                                'backgroundcolor',[0.8 0.8 0.8], ...
                                'foregroundcolor',[0 0 0],...
                                'value',m20(i,4),...
                                'callback','mafonction');
     
    end

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

    Le plus simple est d'utiliser un objet Uitable et de sa propriété 'CellEditCallback' :
    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
    function m20 = exemple
     
    m20 = [...
        25.4   101.6    0310   1 1
        25.4   203.2    0320   1 1
        50.8   101.6    0510   1 1
        50.8   127.0    0513   1 1
        50.8   152.4    0515   1 1
        50.8   177.8    0518   1 1
        76.2   101.6    0810   0 1
        76.2   127.0    0813   0 1
        76.2   152.4    0815   0 1
        76.2   177.8    0818   0 1
        76.2   203.2    0820   0 1
        76.2   254.0    0825   1 1
        76.2   304.8    0830   1 1
        89.5   101.6    0910   1 1
        89.5   152.4    0915   1 1
        89.5   203.2    0920   1 1
        89.5   254.0    0925   1 1
        101.6   101.6    1010   1 1
        101.6   127.0    1013   1 1
        101.6   152.4    1015   1 1
        101.6   177.8    1018   1 1
        101.6   203.2    1020   1 1
        101.6   254.0    1025   1 1
        101.6   304.8    1030   1 1
        127.0   101.6    1310   1 1
        127.0   127.0    1313   1 1
        127.0   152.4    1315   1 1
        127.0   177.8    1318   1 1
        127.0   203.2    1320   1 1
        127.0   254.0    1325   1 1
        127.0   304.8    1330   1 1
        152.4   152.4    1515   1 1
        152.4   177.8    1518   1 1
        152.4   203.2    1520   1 1
        152.4   254.0    1525   1 1
        152.4   304.8    1530   1 1
        203.2   203.2    2020   1 1
        203.2   254.0    2025   1 1
        203.2   304.8    2030   1 1
        203.2   356.0    2035   1 1
        203.2   406.0    2040   1 1
        229.0   203.2    2320   1 1
        229.0   254.0    2325   1 1
        229.0   304.8    2330   1 1
        229.0   356.0    2335   1 1
        229.0   406.0    2340   1 1
        ];
     
    data = [num2cell(m20(:,3)) num2cell(logical(m20(:,4)))];
    uitable('Data', data, ...
        'ColumnFormat', {'numeric', 'logical'}, ...
        'ColumnEditable', [false true],...
        'CellEditCallback', @cellEditCallback)
     
    uiwait % On attend la fermeture de la fenêtre pour retourner la valeur
     
        function cellEditCallback(~,eventData)
            m20(eventData.Indices(1), 4) = eventData.NewData;
        end
    end
    utilisé :

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Points : 35
    Points
    35
    Par défaut retour de uitable
    bonjour

    je viens de tester (pas habitué à uitable) mais :

    me donne erreur en ligne 60 colonne 31

    ??? Error: File: exemple.m Line: 60 Column: 31
    Unexpected MATLAB operator.
    Je suis en R2009a

    merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ta version est trop ancienne pour supporter cette syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function cellEditCallback(~,eventData)
    qui indique que le premier paramètre ne sera pas utilisé.

    Remplace-le par le nom d'une variable quelconque (hObject couramment).

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Points : 35
    Points
    35
    Par défaut retour
    bonjour

    pas évident ce uitable

    j ai remplacé caractère ~

    ok cela marche

    merci

    mais comment obtenir la nouvelle matrice dans un point m ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je ne comprends pas ce passage :
    Citation Envoyé par albertgl Voir le message
    dans un point m ?
    Dans mon exemple, on actualise le tableau m20 au sein de la fonction callback cellEditCallback(), et on la retourne de la fonction exemple() une fois la fenêtre fermée.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Points : 35
    Points
    35
    Par défaut retour
    rebonjour

    oui dans un fichier txt ( enfin sur disque ) et pas un dot m

    désolé mais je viens du fortran ( en .f )
    et je me suis mis à matlab il y a peu.

    ainsi les "nouveautés", je dois les digérer.

    quand à ma mémoire, je préfère ne pas trop en parler, elle dégringole.

    désolé de prendre de votre temps.

    j' arrive tout doucement à mes 69 printemps.

    merci a vous

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Points : 35
    Points
    35
    Par défaut rebonjour
    voila

    si je fais simplement

    save filename ans -ascii -tabs

    avec filename = par ex == matrix_1903.txt

    je créerai les data nouveaux sur le disque
    donc j'obtiendrai les mises a jour

    voila
    merci

  9. #9
    Invité
    Invité(e)
    Par défaut
    Évite d'utiliser ans qui représente le dernier résultat non-affecté à une variable au profit d'une vraie variable nommée.
    Si tu souhaites rendre le nom du fichier variable, utilise la syntaxe présentée ici.
    Tu peux aussi utiliser la fonction dlmwrite pour l'écriture du fichier.

Discussions similaires

  1. Liste des checkbox cochées dans un formulaire
    Par qwiskas dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 19/09/2006, 05h25
  2. liste de checkbox et extraire les cases cochées.
    Par schtroumpf_farceur dans le forum Langage
    Réponses: 1
    Dernier message: 01/08/2006, 15h49
  3. Parcourir une liste de checkbox
    Par fet dans le forum ASP
    Réponses: 3
    Dernier message: 25/07/2006, 12h35
  4. Cocher/Decocher une liste de checkbox
    Par Alain15 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 20/07/2006, 15h40
  5. [JSP] Liste de checkboxes 2 niveaux de hiérarchie dans form
    Par belgianbaloo dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 21/09/2005, 09h59

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