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 :

Créer plusieurs edits texts avec une boucle


Sujet :

Interfaces Graphiques

  1. #1
    Membre averti
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Points : 301
    Points
    301
    Par défaut Créer plusieurs edits texts avec une boucle
    Bonjour,
    je souhaiterais créer plusieurs "edit text" à l'aide d'une boucle. En effet j'ai 32 edits texts à créer et j'aimerais éviter d'avoir 32 déclarations d'édits texts alors que le code est quasiment le même à chaque fois.

    J'ai d'abord essayé avec "eval":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval([nomLabel '= uicontrol(h_parent,' optionsFixes optionsVar ');']);
    En modifiant à chaque fois dans ma boucle "nomLabel" et "optionsVar" (les options que je modifie à chaque fois, comme 'string' ou 'position'). Cependant j'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?? Attempt to add "label1" to a static workspace"
    A priori on ne peut donc pas créer de variables de cette façon.

    J'ai donc essayé de créer des tableaux de strings contenant la liste des options pour les 32 edits texts, puis de faire en dehors de ma boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    label1 = uicontrol(h_parent,optionsFixes,optionsVar(1));
    label2 = uicontrol(h_parent,optionsFixes,optionsVar(2));
    ...
    Mais dans ce cas j'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ??? Error using ==> uicontrol
    Too many input arguments.
    Alors que les chaînes optionsFixes et optionsVar(X) sont bien correctes.

    Quelqu'un aurait-il déjà fait ça? Est-ce possible?
    Merci d'avance pour vos réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 308
    Points : 52 892
    Points
    52 892
    Par défaut
    Que contiennent exactement les variables optionsFixes et optionsVar ?

    Pourrais nous montrer un exemple avec seulement 2 ou 3 objets ?

  3. #3
    Membre averti
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Points : 301
    Points
    301
    Par défaut
    Voici mon code simplifié à 3 objets:

    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
    optionsFixes = ['''style'',''edit'',''backgroundColor'',[1 1 1],''string'',''0''',...
                                   '''units'',''pixels'',''Horizontalalignment'',''right'',',...
                                   '''Callback'',@(hObject,eventdata)call_edit(hObject,eventdata,guidata(hObject)),'];
     
    optionsVar = {};
    posX = 20;
    posY = 300;
    for i = 1:3
        optionsVar(i) = {['''position'',[' posX posY '130 30]']};
        posX = posX + 50;
        posY = posY - 30;
    end
     
    edit1 = uicontrol(h_parent,optionsFixes,char(optionsVar(1)));
    edit2 = uicontrol(h_parent,optionsFixes,char(optionsVar(2)));
    edit3 = uicontrol(h_parent,optionsFixes,char(optionsVar(3)));

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 308
    Points : 52 892
    Points
    52 892
    Par défaut
    Voici une version corrigée :

    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
    optionsFixes = {'style' 'backgroundColor' 'string' 'units' 'Horizontalalignment' 'Callback'};
    valFixes = {'edit' [1 1 1] '0' 'pixels' 'right' @(hObject,eventdata)call_edit(hObject,eventdata,guidata(hObject))};
     
    posX = 20;
    posY = 300;
    for i = 1:3
        optionsVar{i} = 'position';
        valVar{i} = [posX posY 130 30];
        posX = posX + 50;
        posY = posY - 30;
    end
     
    for i = 1:3
        h_edit(i) = uicontrol(h_parent,optionsFixes,valFixes,optionsVar(i),valVar(i));
    end
    ou plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    optionsFixes = {'style' 'backgroundColor' 'string' 'units' 'Horizontalalignment' 'Callback'};
    valFixes = {'edit' [1 1 1] '0' 'pixels' 'right' @(hObject,eventdata)call_edit(hObject,eventdata,guidata(hObject))};
     
    posX = 20;
    posY = 300;
    for i = 1:3
        h_edit(i) = uicontrol(h_parent,optionsFixes,valFixes,'position',[posX posY 130 30]);
        posX = posX + 50;
        posY = posY - 30;
    end

  5. #5
    Membre averti
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Points : 301
    Points
    301
    Par défaut
    Merci pour ta réactivité!
    J'ignorait qu'on pouvait séparer comme ça les options avec leurs valeurs. C'est bien plus lisible comme ça ^^
    Ta solution marche impeccable, merci beaucoup!

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

Discussions similaires

  1. ActionScript 2 Manipuler plusieurs clips créés avec une boucle for
    Par adinx dans le forum ActionScript 1 & ActionScript 2
    Réponses: 7
    Dernier message: 09/04/2008, 15h01
  2. Comment atteindre une zone de texte avec une boucle For
    Par patate5555 dans le forum VBA Access
    Réponses: 2
    Dernier message: 18/06/2007, 20h28
  3. Réponses: 3
    Dernier message: 24/04/2007, 11h39
  4. Comment parcourir un fichier texte avec une boucle ?
    Par kikica dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2005, 17h13
  5. : remplir des zones de texte avec une boucle For
    Par Haro_GSD dans le forum Access
    Réponses: 3
    Dernier message: 20/09/2005, 21h23

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