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 :

Ecrasement d'une variable créée dans une interface graphique


Sujet :

Interfaces Graphiques

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 97
    Points : 87
    Points
    87
    Par défaut Ecrasement d'une variable créée dans une interface graphique
    Bonjour à tous,

    Je dispose d'une interface graphique qui permet le chargement d'un fichier texte et le tracé des différentes colonnes qui le composent. Cette interface dispose d'une fonction calculatrice, qui se présente comme une sous-interface s'ouvrant dans une fenêtre séparée et qui permet de réaliser des opérations basiques (somme, soustraction, produit...) sur une colonne ou sur deux colonnes pour en créer une troisième qui pourra par la suite être tracée sur l'interface principale.

    Le problème est le suivant. Dans le cas où je crée deux colonnes portant le même nom, la première n'est pas écrasée par la seconde, ce que je souhaiterais. L'idée serait de récupérer le nom de la colonne calculée par un get(handles,'string'), de le comparer à la liste des noms des colonnes déjà existantes et de supprimer la colonne existante dont le nom correspond au nom de la nouvelle colonne calculée. Je n'arrive malheureusement pas à mettre en oeuvre cette idée, ni même à savoir où la mettre en forme dans mon code.

    Toute aide est la bienvenue.

    Ci-joint le morceau de code concernant la fonction calculatrice :
    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
    function pushCalc(obj,event)
     
    try
        % On definit figCalc comme l objet parent %
        figCalc = get(obj,'parent');
     
        % Recuperation des handlesCalc de figCalc %
        handlesCalc = guidata(figCalc);
     
        % Appel de figUCD %
        figUCD = getappdata(0,'figUCD');
     
        % Recuperation des handlesUCD de figUCD %
        handlesUCD = guidata(figUCD);
     
        % Recuperation Col et TitreCol %
        Col = getappdata(0,'Col');
        TitreCol = getappdata(0,'TitreCol');
     
        % Recuperation donnees A et B %
        A = getappdata(0,'A');
        B = getappdata(0,'B');
     
        % Recuperation de Fonction sous forme de string si saisie manuelle
        % Sous forme de cell si saisie boutons %
        Fonction = get(handlesCalc.editFonction,'string');
     
        % Conversion Fonction cell to string si saisie boutons %
        Fonction = char(Fonction);
     
        % Ajout du marqueur fonction (@(x,y)) pour Fonction %
     
        % Si les deux variables sont presentes %
        if ismember('A',Fonction) && ismember('B',Fonction)
     
            % Ajout du marqueur %
            Fonction = cat(2,'@(x,y)',Fonction);
     
            % Replacement A et B par x et y %
            Fonction = strrep(Fonction,'A','x');
            Fonction = strrep(Fonction,'B','y');
     
            % Fonction : string to command operation %
            Fonction = str2func(Fonction);
     
            % Calcul de la fonction avec les variables selectionnees %
            C = Fonction(A,B);
     
        % Si seulement une seule variable %
        elseif ismember('A',Fonction) || ismember('B',Fonction)
     
            % Ajout du marqueur %
            Fonction = cat(2,'@(x)',Fonction);
     
            % Deux cas : si A existe ou si B existe %
            switch ismember('A',Fonction)
                case 1
                    % Remplacement A par x %
                    Fonction = strrep(Fonction,'A','x');
     
                    % Fonction : string to command operation %
                    Fonction = str2func(Fonction);
     
                    % Calcul de la fonction avec la variable selectionnee %
                    C = Fonction(A);   
                case 0
                    % Remplacement B par x %
                    Fonction = strrep(Fonction,'B','x');
     
                    % Fonction : string to command operation %
                    Fonction = str2func(Fonction);
     
                    % Calcul de la fonction avec la variable selectionnee %
                    C = Fonction(B);              
            end
     
        end
     
        % Recuperation nom nouvelle variable %
        NvelleVar = get(handlesCalc.editNomVar,'string');
     
        % Conversion string vers cell pour enregistrement dans structure Col %
        NvelleVar = cellstr(NvelleVar);
     
        % Ajout de C dans Col %
        Col.(NvelleVar{1}) = C;
     
        % Ajout nom NvelleVar dans TitreCol %
        TitreCol = [TitreCol,NvelleVar];
     
        % Enregistrement nouveau Col et TitreCol %
        setappdata(0,'Col',Col);
        setappdata(0,'TitreCol',TitreCol);
     
        % Actualisation TitreCol sur UCD %
        set(handlesUCD.listX,'string',TitreCol);
        set(handlesUCD.listY,'string',TitreCol);
     
        % Fermeture Calculatrice %
        close
     
    catch Err    
        % Message erreur si pas de nom nvelle variable %
        if (strcmp(Err.identifier,'MATLAB:AddField:InvalidFieldName'))
     
        MsgErr = sprintf('%s\n%s',...
              'Error:',...
              'New variable requires a name.'); 
     
        set(handlesUCD.editMsgErr,'string',MsgErr);
        end
     
        % Message erreur si fonction pas renseignee %
        if isempty(get(handlesCalc.editFonction,'String'))
     
        MsgErr = sprintf('%s\n%s',...
              'Error:',...
              'Function not defined.'); 
     
        set(handlesUCD.editMsgErr,'string',MsgErr);
        end      
     
    end
    Merci à vous.

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 97
    Points : 87
    Points
    87
    Par défaut
    Je m'auto réponds, poser le problème m'aura finalement aidé à y voir plus clair.

    La solution était finalement très simple. Après l'appel de ma structure contenant mes colonnes ainsi que le tableau de cellules contenant les entêtes de chaque colonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    % Recuperation Col et TitreCol %
    Col = getappdata(0,'Col');
    TitreCol = getappdata(0,'TitreCol');
    il fallait poser la condition suivante portant sur le nom de la colonne que je calculais avec ma calculatrice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ismember(get(handlesCalc.editNomVar,'string'),TitreCol)
        TitreCol(:,end) = [];
        Col = rmfield(Col,get(handlesCalc.editNomVar,'string'));
    end
    qui consiste à supprimer via la fonction rmfield la colonne de la structure que je souhaitais écraser ainsi que l'entrée qui faisait référence à cette colonne dans le tableau contenant les noms de colonnes.

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

Discussions similaires

  1. Afficher une variable créée dans une JSP
    Par dams78 dans le forum Struts 2
    Réponses: 4
    Dernier message: 12/06/2012, 15h13
  2. Réponses: 5
    Dernier message: 18/10/2011, 00h06
  3. Réponses: 9
    Dernier message: 23/06/2009, 10h54
  4. Réponses: 1
    Dernier message: 20/04/2007, 09h12
  5. récupérer une variable javascript dans une variable java
    Par tx dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/07/2006, 17h55

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