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 :

Fonctionnement de base - ajout/suppression d'Edit [Débutant]


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Par défaut Fonctionnement de base - ajout/suppression d'Edit
    Bonjour,

    je suis débutant en GUI, je me suis donc amusé à modifier un code trouvé dans un de vos tutoriels : http://briot-jerome.developpez.com/m...es-graphiques/

    J'ai donc modifier le code de manière à afficher un nombre variable de "zone de texte à éditer", en fonction du nombre afficher dans la case au-dessus .

    Mon problème étant que je n'arrive pas à récupérer la valeur instantanée du compteur... vous pouvez voir le code ici :

    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
     
    function gui_appdata_findobj
     
    % Création de l'objet Figure
    figure('units','pixels',...
    'position',[250 250 500 500],...
    'color',[0.925 0.913 0.687],...
    'numbertitle','off',...
    'name','HRT files treatment',...
    'menubar','none',...
    'tag','interface');
     
    % Création de l'objet Uicontrol Pushbutton -
    uicontrol('style','pushbutton',...
    'units','normalized',...
    'position',[0.3 0.9 0.1 0.05],...
    'string','-',...
    'callback',@retrancher,...
    'tag','bouton-');
     
    % Création de l'objet Uicontrol Pushbutton +
    uicontrol('style','pushbutton',...
    'units','normalized',...
    'position',[0.6 0.9 0.1 0.05],...
    'string','+',...
    'callback',@ajouter,...
    'tag','bouton+');
     
    % Création de l'objet Uicontrol Text résultat
    uicontrol('style','text',...
    'units','normalized',...
    'position',[0.45 0.90 0.1 0.05],...
    'string','0',...
    'tag','resultat');
     
    % Création de l'objet Uicontrol Text résultat
    uicontrol('style','text',...
    'units','normalized',...
    'position',[0.25 0.95 0.5 0.05],...
    'string','How many HTR files do you want to treat ?');
     
    % Initialisation de la valeur représentant la valeur courante du compteur nCompteur à 0
    nCompteur=0;
     
    % Enregistrement direct de nCompteur dans les données d'application de l'objet Figure
    setappdata(gcf,'valeur_de_nCompteur',nCompteur);
     
     
    % Création de l'objet UIcontrol Zone de Texte éditable
    for i=0:1:getappdata(gcf, 'valeur_de_nCompteur')
    uicontrol('style', 'edit',...
     'units', 'normalized',...
     'position', [0.03+i*0.33 0.80 0.3 0.05],...
     'string', 'filename.htr');
    end
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %FIN DE LA FONCTION PRINCIPALE%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %DEBUT DE LA SOUS-FONCTION RETRANCHER%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    function retrancher(obj,event)
     
    % Récupération directe de nCompteur depuis les données d'application de l'objet Figure
    % contenant l'objet graphique dont l'action est exécutée (gcbf)
    nCompteur=getappdata(gcbf,'valeur_de_nCompteur');
     
    % Diminution de la valeur de nCompteur
    nCompteur=nCompteur-1;
     
    % Récupération de l'identifiant de l'objet Uicontrol Text résultat enfant de l'objet Figure
    % contenant l'objet graphique dont l'action est exécutée (gcbf)
    h=findobj('parent',gcbf,'style','text','tag','resultat');
     
    % Modification de sa propriété String
    set(h,'string',num2str(nCompteur));
     
    % Enregistrement de la nouvelle valeur de nCompteur dans les données d'application de l'objet Figure
    % contenant l'objet graphique dont l'action est exécutée (gcbf)
    setappdata(gcbf,'valeur_de_nCompteur',nCompteur);
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %FIN DE LA SOUS-FONCTION RETRANCHER%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %DEBUT DE LA SOUS-FONCTION AJOUTER%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    function ajouter(obj,event)
     
    % Récupération directe de nCompteur depuis les données d'application de l'objet Figure
    % contenant l'objet graphique dont l'action est exécutée (gcbf)
    nCompteur=getappdata(gcbf,'valeur_de_nCompteur');
    nCompteur=nCompteur+1;
     
    % Récupération de l'identifiant de l'objet Uicontrol Text résultat enfant de l'objet Figure
    % contenant l'objet graphique dont l'action est exécutée (gcbf)
    h=findobj('parent',gcbf,'style','text','tag','resultat');
     
    % Modification de sa propriété String
    set(h,'string',num2str(nCompteur));
     
    % Enregistrement de la nouvelle valeur de nCompteur dans les données d'application de l'objet Figure
    setappdata(gcbf,'valeur_de_nCompteur',nCompteur);
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %FIN DE LA SOUS-FONCTION AJOUTER%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    Mon problème se situe donc certainement à la ligne 49, car n'ayant pas la bonne variable....ou tout du moins, c'est zéro, il n'y a pas de rafraichissement de la valeur.

    Je suis sûr que la réponse est infantine mais je ne vois pas du tout. Je dois certainement chercher dans la mauvaise direction...

    Merci à tous d'avance.

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

    Dans le code de callback des bouton -/+, tu ne fais que gérer la décrémentation/incrémentation de la variable nCompteur et son l'affichage.
    Mais tu ne gères en rien l'ajout et la suppression des objets Edit.
    Tu dois par exemple utiliser le code h(nCompteur+1) = uicontrol('style', 'edit',...) dans celui de l'ajout, et un delete(h(nCompteur)) dans le retrait (h étant stocké comme nCompteur)

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Par défaut
    Merci de ta réponse rapide !

    Mais comme je l'ai mis sur mon post je suis débutant et je pense qu'un exemple me permettrait de mieux comprendre car là.....

    Donc si tu as un exemple sous la main... et pourquoi tu parles de h ? je croyais qu'on pouvais atteindre les valeurs des variable uniquement avec des set et get ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il n'y a qu'à demander:
    La première partie dans la boucle serait à placer dans l'ajout, et la seconde dans la suppression, moyennant quelques modifications
    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
    fig = figure;
    nCompteur = 0;
    % Génération des Edit
    for i = 0:9
        h(nCompteur+1) = uicontrol(fig,'style','edit',...
            'string',sprintf('edit%d',i),...
            'tag',sprintf('edit%d',i),...
            'units','normalized',...
            'position',[0.3 i/10 0.4 1/20]);
        nCompteur = nCompteur+1;
    end
    pause % Appuie sur Entrée pour exécuter la suite
    % Tu supprimes le dernier
    delete(h(nCompteur))
    nCompteur = nCompteur-1;
    pause
    % Et encore le dernier
    delete(h(nCompteur))
    nCompteur = nCompteur-1;
    Citation Envoyé par rhum187 Voir le message
    je croyais qu'on pouvais atteindre les valeurs des variable uniquement avec des set et get ?
    Oui mais plus particulièrement par le biais de leur handle et faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set(handleObjet,'propriété',nouvelle_valeur);
    valeur = get(handleObjet,'propriété');
    Et c'est ce que je récupère dans h.
    Tu le récupères toi-même en utilisant la fonction FINDOBJ.
    Dernière modification par Invité ; 13/10/2011 à 04h39.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Par défaut
    ça marche très pour pour la création, par contre pour la suppression c'est pas la même chose... ^^

    Voici mon erreur...

    Undefined function or variable "h".
    
    Error in ==> gui_appdata_findobj>retrancher at 75
    delete(h(nCompteur+1));
    
    ??? Error while evaluating uicontrol Callback

  6. #6
    Invité
    Invité(e)
    Par défaut
    Dans ce cas tu as raté:
    Citation Envoyé par Winjerome
    h étant stocké comme nCompteur
    Donc stockage/récupération avec setappdata/getappdata

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/10/2014, 17h30
  2. Ajout/Suppression de ligne ( base ACCESS )
    Par programmeur69 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 17/02/2009, 20h15
  3. Réponses: 3
    Dernier message: 03/07/2008, 15h32
  4. [C# 2.0] Ajouter, Suppression et mise à jour d'un datagridview en base
    Par doudoustephane dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/04/2007, 11h33

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