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 :

Écriture automatique dans UITable


Sujet :

Interfaces Graphiques

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 10
    Points
    10
    Par défaut Écriture automatique dans UITable
    Bonjour,

    Je travaille sur une interface GUI, avec GUIDE. J'ai un problème concernant les uitable.

    Je dispose d'une base de données que je charge dans mon GUI. Les noms des composants de la base de données s'inscrivent dans un popupmenu. Une fois que je sélectionne dans ce dernier le composant souhaité, certaines caractéristiques s'affichent dans des Edit Text.
    C'est là que ma question arrive. A l'aide d'un PushButton, j'aimerais pouvoir afficher le nom du mon composant considéré dans ma uitable. J'ai vu que cela ne fonctionnais pas, par incompatibilité des variables pouvant être insérées dans une uitable.

    Cependant, est-il possible, à l'aide d'un pushbutton, d'inscrire une chaine de caractère (ou une variable string) dans le nom des lignes de l'uitable? Le nom de ces lignes est accessible manuellement dans le "Table Property Editor", mais un programme peut-il interargir avec cette entité une fois l'exécutable lancé?

    Merci pour votre réponse et/ou vos conseils .

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

    Oui c'est possible à l'aide de la propriété RowName :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(handle_de_ton_uitable, 'RowName', {'Ligne1', 'Ligne 2', 'Ligne 3',...})

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup pour cette réponse rapide. C'est parfait, ça fonctionne !!

    Je suis cependant confronté à un autre soucis. J'ai cherché sur la FAQ, mais je ne trouve pas (ou ne comprend pas) comment adapter le code suivant à ma problématique, qui est : à chaque fois que j'appuie sur le pushbutton, j'aimerais que le nom du composant (différent à chaque fois) s'ajoute à la ligne du dessous de la uitable, et ne remplace pas la première ligne.

    Comme point de départ j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    strl=get(handles.listbox,'string');  
    strl=cellstr(strl);
    strl{end+1}=get(handles.edit2,'string'); %C'est dans édit2 que je récupère le nom du composant sélectionné dans le popupmenu. 
    set(handles.listbox,'string',strl);
    Ce code est utilisé pour remplir une listbox, sans écraser la première ligne à chaque fois. Est-ce possible d'utiliser la même logique pour une uitable?

    Encore merci pour ton aide Winjerome !!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ponoko Voir le message
    Est-ce possible d'utiliser la même logique pour une uitable?
    Si on parle toujours de la propriété RowName, oui tout à fait

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Ok, ca fonctionne avec le code suivant (pour ceux qui seraient intéressés) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    s=get(handles.uitable,'RowName');
    s=cellstr(s);
    s{end+1}=get(handles.edit,'string); % c'est dans edit que je récupère le nom du composant à fikxer dans RowName
    set(handles.uitable,'RowName',s);
    Cependant, maintenant que j'ai réussi à fixer le nom de la ligne et qu'il ne s'écrase pas à chaque ajout de composant, je ne comprend pas comment faire pour qu'une matrice du style [1 0 0 0 0] vienne s'afficher dans l'uitable en face de la ligne qui correspond au nom du composant dans l'éditbox, puis pour que cette matrice dans l'uitable de 5 colonnes ne s'écrase pas à un nouvel ajout.

    Quelqu'un pourrait-il me mettre sur la piste svp?

    D'avance merci !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Dans le même ordre d'idée, on rajoute non plus un élément, mais une ligne aux données précédentes.
    Pour ce faire, on commence par récupérer le contenu actuel (propriété 'Data') :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data = get(handles.uitable,'Data');
    Ce contenu pourra, selon ton cas, se présenter sous plusieurs formes :

    Il suffit enfin de mettre à jour notre tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(handles.uitable,'Data', data)

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup WinJerome. Cela fonctionne parfaitement. Tes indications sont très pédagogiques.

    Ton aide m'a été très précieuse .

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Je m'excuse de revenir sur cette question, mais j'ai un autre soucis avec l'agencement des lignes de l'uitable . Je démarre avec 4 lignes vides, qui ne me servent à rien et qui décalent mes résultats vers le bas, de 4 lignes. Le remplissage de l'uitable ne se fait pas en face des RowNames précédemment entrés.


    Je ne trouve pas comment faire pour enlever ces 4 lignes. J'ai essayer avec la discussion "[GUI]insérer/supprimer une ligne uitable", avec la fonction NewData et EditData, mais cela ne fonctionne pas. Je n'ai pas spécialement de coded à présenter, je m'en excuse. Effectivement, je n'ai pas réussi à faire fonoctionner les fonctions NewData et EditData, quand bien même elles soient adaptées.

    J'ai aussi essayé de ''supprimer'' des lignes dans le table property inspector, mis rien n'y fait, elles reviennent automatiquement.

    Comment puis-je résoudre ce problème de décalage? J

    e pense que dans le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data = get(handles.uitable, 'Data') % ligne de code provenant des messages précédents de WinJerome
    il faudrait que je parvienne à modifier le Data, car c'est lui qui contient ces 4 lignes vides. mais je ne sais pas comment m'y prendre.


    Merci !!

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Finalement, j'ai contourné mon problème par une autre stratégie, propre à l'application que je suis en train de développer. Mes excuses pour ce dernier dérangement.

    Encore merci pour toute l'aide que tu m'a apporté WinJerome !!

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    J'ai besoin d'un conseil, si vous avez un peu de temps pour moi svp .

    Quand je crée mes lignes avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    s=get(handles.uitable,'RowName');
    s=cellstr(s);
    s{end+1}=get(handles.edit,'string); % c'est dans edit que je récupère le nom du composant à fikxer dans RowName
    set(handles.uitable,'RowName',s);
    ces dernières ne sont pas éditables, or j'ai besoin qu'elles le soient. Je dois écrire dans les case de l'uitable des chiffres (positif uniquement). Cependant, dès que j'essaie d'écrire (car c'est possible d'y écrire), la valeur disparait quand je clique ailleurs et un message d'erreur apparait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning : Table Data is not editable at this location.
    J'ai donc essayer avec la propriété ColumnEditable insérée dans mon code comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    s=get(handles.uitable,'RowName');
    s=cellstr(s);
    s{end+1}=get(handles.edit,'string); % c'est dans edit que je récupère le nom du composant à fikxer dans RowName
    set(handles.uitable, 'ColumnEditable', [true true true true true], 'ColumnFormat', {'numeric' 'numeric' 'numeric' 'numeric' 'numeric'}, 'RowName',s);
    mais j'obtiens toutjours le même message d'erreur. J'ai aussi essayer avec le 'findobj', mais cela ne fonctionne pas. L'uitable n'est pas une figure à part, elle est dans l'interface (créée avec GUIDE). Sinon c'est simple, j'aurais pris le code de discussions présentes dans la FAQ.

    Dans le table Property, j'ai bien mis toutes les colonnes éditables et au format numéric, mais rien n'y fait.


    Jspr avoir été suffisamment clair.

    D'avance merci pour votre aide et/ou vos conseils.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Tu parles bien des données 'Data' et non des étiquettes des lignes 'RowName' ?

    En même temps que rajouter l'étiquette de la nouvelle ligne, as-tu pris soin de rajouter la nouvelle ligne de données (par défaut) ? Dans le cas contraire, elles sont comme dans un état invalide.

    Sinon c'est bien avec la propriété 'ColumnEditable' comme tu l'as fait qu'il faut procéder.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    Je parle effectivement des informations qu'il est possible de saisir dans Data, et non dans le RowName .

    J'ai peur de ne pas avoir tout compris. Qd j'exécute le code de mon précédent msg, la ligne complète apparaît, avec le bon RowName. Or dès que je veux saisir des données dans les colonnes (donc dans le Data), je peux les écrires, mais elles ne sont pas retenues, elles disparaîssent aussitôt que je clique ailleurs ou que je me déplace dans une autre case.

    Comme je peux écrire dans ces lignes, elles ne sont pas invalides, si j'ai bien compris la notion de on, off et invalid du Enable pour une uitable.

    Je n'arrive pas a voir pourquoi ce que je saisi n'apparait plus dans les cases et surtout comment résoudre ce problème .

  13. #13
    Invité
    Invité(e)
    Par défaut
    Justement si elles sont invalides, sinon tu n'aurais pas ce message d'erreur
    Je ne connais pas le fonctionnement interne, mais il y a fort à parier que le 'Data' reste à la taille précédente tant que tu ne lui a pas fixé explicitement sa nouvelle taille, produisant alors le message d'avertissement.
    Donc augmente aussi sa taille en même temps que le 'RowName', avec ce qui a été dit dans ce message.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    D'accord, je viens de comprendre. Ca fonctionne avec le code de ton précédent msg effectivement. Il ne me reste plus qu'à trouver comment mettre une ligne vide à la place de [1 0 0 0 0] pour newLine .

    D'ailleurs, est-ce possible de mettre une ligne vide? que je puisse remplir moi-même?


    Merci beaucoup, je n'avais pas saisi la facon dont créer des lignes ''non-invalides'' !!

  15. #15
    Invité
    Invité(e)
    Par défaut
    C'est possible, mais il faudra alors utiliser un tableau de cellules à la place d'un simple tableau numérique afin de pouvoir avoir des "cases vides".

    L'ajout de la nouvelle ligne pourra alors se faire comme cela : data(end+1,:) = {[]};.

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 29
    Points : 10
    Points
    10
    Par défaut
    C'est super , ca fonctionne parfaitement !!

    Merci pour ton aide, c'est très gentil !!

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 22/09/2013, 16h57
  2. écriture automatique dans formulaire
    Par Hurin dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 25/07/2007, 14h57
  3. [Utile]Rajout automatique dans input et verif date
    Par matpal dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/11/2004, 16h36
  4. Réponses: 2
    Dernier message: 11/05/2004, 11h17
  5. Scroll automatique dans un JTextPane
    Par regbegpower dans le forum Composants
    Réponses: 9
    Dernier message: 11/11/2003, 09h24

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