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 :

Position menu de listdlg comment la maitriser ou la changer


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 45
    Points
    45
    Par défaut Position menu de listdlg comment la maitriser ou la changer
    Bonjour
    J’utilise matlab R2012B et j’ai crée diverses IHM en programation classique
    Pour un menu de choix assez simple j’ai utilisé la fonction listdlg avec le code ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    listeChoix={'Initial','All Manu','All Auto','Actual','Initial=Actual'};
    [Selection,ok] = listdlg('ListString',listeChoix,'SelectionMode','single','PromptString','Select Config Auto','ListSize',[150 80]);
    if ok==1
        Choix=listeChoix{Selection};
    else
        Choix=listeChoix{4};   % 'Actual
    end
    le menu fonctionne mais la position du menu sur l’écran ou la figure n’est pas maitrisée et semble résulter « du hasard » ( ?)
    La documentation ne donne pas de propriété « Position » permettant de choisir la position de ce menu.
    Comment faire ?

  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 302
    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 302
    Points : 53 166
    Points
    53 166
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 45
    Points
    45
    Par défaut
    Merci , vu la réponse

    cependant je ne vais pas m'en servir car mom application doit être transférable vers des poste de travail ou je ne pourrai pas installerla fonction alternative proposée listdialg2 (faute de droit admisnistrateur et autre difficultés similaires)
    je vais chercher une autre solution en sachant que cela va être un peu plus compliqué....

    Merci pour votre aide.

    CATA

  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 302
    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 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Tu peux très bien placer le fichier listdlg2.m dans le répertoire de ton projet.

    Le fait de le mettre dans le répertoire d'installation de MATLAB le rend juste disponible pour des développements ultérieures.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 82
    Points : 45
    Points
    45
    Par défaut Retour après test de listdlg2
    Bonjour
    Finalement j'ai voulu tester la solution proposée par le lien et voici les soucis rencontrés:

    1) il n'est pas possible d'utiliser la fonction listdlg2 ailleurs que à l'emplacement indiqué par Matlab (dans le répertoire d'installation).
    Si on place la fonction ailleurs, elle ne fonctionne pas car ele ne trouve pas la fonction warnfiguredialog qui est implantée dans ce répertoire. (pourtant dans le Path ??)
    donc l'installation requièrera toujours les « droits administrateurs » pour placer Listdlg2.

    2) le code fournit sur le site ne fonctionne pas dans R2012B. Pour avoir une fonction opérationnelle j'ai repris le code de listdlg de R2012B (très légèrement différent) et j'ai refait les mêmes modifications que proposées dans listdlg2. J'ai appellé cette nouvelle fonction listdlg3 et la cela fonctionne... (les différences entre codes ne sont pas importantes mais sont peu compréhensibles pour moi).
    Le problème est que si la version Matlab change, je risque fort de rencontrer des problèmes d'adaptation (de la maintenance à faire donc)…

    3) j'ai constaté que la fonction listdlg2 (ou listdlg3 maintenant) ne fonctionne pas bien dans mon environnement à 3 écrans , ca marche bien si la position demandée est dans l'écran 1 par contre cela ne marche pas si la position est sur l'écran 2 ou 3 (en coordonnées négatives). C'est due à la fonction " movegui(fig) " qui oblige la fenêtre à apparaitre sur l'écran 1.
    suprimer la fonction " movegui(fig) " du code règle le problème sauf que la fenêtre peut disparaitre de l'écran si "position" est mal définit et comme c'est une fenêtre modale associé à un uiwait, le programe serait bloqué. c'est un pb embêtant !
    il faudrait une fonction movegui(fig) qui fonctionne dans tous les cas de 3 écrans !

    4) la fonction modifiée ne fonctionne pas correctement pour les parametres de largeur et de hauteur de la fenêtre, il arrive que les boutons ne soient pas visibles , ou que une partie de la "liste de choix" soit masquée...n gros il manque des limites au valeurs custom de largeur et hauteur de la fenetre.
    j'ai essayé de réutiliser les paramètre w et h de la version standard mais sans bien réussir. Leur définition est assez mystérieuse. En fait je n’utilise plus que les 2 premier parametre deposition et je garde w et h calculé par la fonction initiale. Mais le résultat est etrange. (hauteur excessive…)

    En conclusion je trouve que le résultat est pas suffisamment fiable et je comprends l'avertissement du site Matworks relatif à l'absence de "test intensif" de cette fonction modifiée....’ Please note that these changes have not been tested extensively and may affect the functionality of MATLAB. We are not able to guarantee that the modified "listdlg2.m" MATLAB file will work with other built-in MATLAB functions. »

    Je vais probablement développer une fonction à moi plus simple et mieux adaptée à mon besoin exact et qui sera plus facile à intégrer à mon application globale.

    Merci pour l'aide. Je voulait faire un retour par rapport à la proposition.

    cordialement

Discussions similaires

  1. Sous-menu grisé automatiquement. Comment l'activer ?
    Par cricri-larson dans le forum MFC
    Réponses: 2
    Dernier message: 29/08/2009, 00h20
  2. [XL-2003] Position Menu Excel
    Par spud96 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/04/2009, 22h38
  3. problème d'héritage des positions menu et sous menus
    Par anxious dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 25/03/2009, 08h44
  4. Probleme position menu vertical
    Par asco5 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 06/08/2008, 09h22
  5. position menu contextuel sous ie et firefox
    Par lodan dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/05/2007, 22h43

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