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 :

GUI table VS editTextbox [Débutant]


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Par défaut GUI table VS editTextbox
    Bonsoir à tous,

    Je viens solliciter votre aide car je penche sur un problème matlab.
    J'ai crée un gui basique pour m'initier pour le boulot avec un tableau et un bouton valider (nommé Valider_choix) . Je dois calculer par exemple la norme d'un vecteur. Pour cela, j'ai besoin des coordonées X, Y et Z des points A et B.
    Actuellement, chaque coordonnée de chaque point est stockée dans une EditTextbox (qu'on appelle Ax, Ay, Az respectivement pour la coordonnées en X , en Y et en Z du point A, de même pour le point B)

    L'opération matlab consiste donc à extraire chaque coordonnée de chaque edittextbox, le convertir en nombre et créer le point:
    Par exemple, on aura donc dans la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function Valider_choix_Callback(hObject, eventdata, handles)
    :
    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
    Ax=get(handles.Ax,'String');
    Ay=get(handles.Ay,'String');
    Az=get(handles.Az,'String');
    Ax=str2num(Ax);
    Ay=str2num(Ay);
    Az=str2num(Az);
    ptA=[Ax, Ay, Az];
     
    Bx=get(handles.Bx,'String');
    By=get(handles.By,'String');
    Bz=get(handles.Bz,'String');
    Bx=str2num(Bx);
    By=str2num(By);
    Bz=str2num(Bz);
    ptB=[Bx, By, Bz];
     
    AB=sqrt((ptB(1)-ptA(1))^2+(ptB(2)-ptA(2))^2+(ptB(3)-ptA(3))^2)
    En réalité, j'ai 92 points différents, n'y a t'il pas un moyen plus rapide en utilisant une table dans le gui? J'ai essayé, mais je n'arrive pas à extraire les données contenues dans les cellules (X,Y,Z) relatives à chaque point.

    J'ai créer un petit modèle matlab de ce que je voudrais faire et je le mets en pièce jointe. Si vous pouviez prendre le temps de m'expliquer la façon de faire pour obtenir le même résultat que les actions ci-dessus, cela m'intéresse beaucoup.

    Je vous remercie de votre aide,
    Fichiers attachés Fichiers attachés

  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 317
    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 317
    Par défaut
    Remplace le callback Valider_choix_Callback par :

    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
    % --- Executes on button press in Valider_choix.
    function Valider_choix_Callback(hObject, eventdata, handles)
    % hObject    handle to Valider_choix (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
     
    data = get(handles.uitable5,'Data');
     
    Ax = data{1,1};
    Ay = data{1,2};
    Az = data{1,3};
     
    ptA = [Ax, Ay, Az];
     
    Bx = data{2,1};
    By = data{2,2};
    Bz = data{2,3};
     
    ptB = [Bx, By, Bz];
     
    AB = sqrt((ptB(1)-ptA(1))^2+(ptB(2)-ptA(2))^2+(ptB(3)-ptA(3))^2);
    AB_res = num2str(AB);
    set(handles.TB_AB,'String', AB_res);
    Par contre, il faudra modifier la propriété ColumnFormat de l'objet uitable en mettant la propriété Format à Numeric pour les trois colonnes

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 13
    Par défaut
    Merci tellement pour ton aide, ça marche parfaitement, en changeant la propriété ColumnFormat !
    Question subsidiaire, est-il possible d'enregistrer la table une fois renseignée avant de quitter le programme, afin que lorsqu'on réouvre le fichier, les données soient toujours stockées dans la table ? Peux être ouvrirai je un nouveau sujet pour cette question

    Merci encore, bonne soirée

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

Discussions similaires

  1. Afficher une table sous GUI
    Par Sasuke1234 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 06/11/2013, 21h18
  2. Réparation table/entête endommagée
    Par tbesrour dans le forum Paradox
    Réponses: 15
    Dernier message: 27/11/2007, 10h42
  3. [ADO] Tester l'existence d'une table
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/09/2002, 13h55
  4. Newbie......compilateur et table de caractères
    Par Cyberf dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 21/08/2002, 14h29
  5. [Comparatifs] Limites nombres tables et quantité de données
    Par benj63 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 13/06/2002, 21h31

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