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

WinDev Discussion :

[WinDev 10] Comment savoir qu'une option de menu possède une sous-option ?


Sujet :

WinDev

  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    473
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 473
    Points : 814
    Points
    814
    Par défaut [WinDev 10] Comment savoir qu'une option de menu possède une sous-option ?
    Bonjour...

    J'ai fait une recherche, mais je n'ai rien trouvé qui puisse me renseigner... Que ce soit sur google ou sur dvp...

    Voila, actuellement, dans le projet sur lequel je travaille, il y a plusieurs vidéos de formation concernant différents points du logiciel.
    Mais pas pour tous.
    J'ai dans la fenêtre principale un menu avec différentes options de menu et sous-options.
    Lorsqu'on clique droit sur une option ou une sous-option, si le fichier vidéo existe, il se lance.

    Mais voila, une des tâches que je dois faire est de changer le libellé de menu pour que celui ci ait (?) de rajouté à la fin pour indiquer qu'il y a une vidéo concernant cette option, mais seulement quand il n'y a pas de sous-option dépendant de cette option... C'est la seule chose que je n'arrive pas à faire (je réussis à ajouter sans probleme le (?) quand il existe un fichier, mais même quand il y a une sous option dépendante de l'option...).

    J'espère avoir été clair.

    Je vous remercie d'avance !

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Avec la fonction EnumèreMenu() il est possible de connaître toutes les options d'un Menu (cf code de l'aide)
    Via cette fonction, il devrait être possible de savoir si un menu comporte (ou ne comporte pas) de sous-menus.

  3. #3
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    473
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 473
    Points : 814
    Points
    814
    Par défaut
    Je te remercie de ta réponse.

    Mais le soucis, c'est que j'ai déja utilisé cette méthode, et que je n'ai pu réussir à résoudre le problème suivant : le nom de fichier de la vidéo correspondant à chaque option, et constitué de la manière suivante :
    Numéro de l'option + ".avi" ou Numéro de l'option + ".asf".

    Mais le numéro de l'option correspondant qu'on peut retrouver dans l'éditeur de fenêtre, en allant dans les propriété de chaque option.

    Par exemple, dans mon cas, on a Fichier -> utilisateur, le sous menu utilisateur a pour numéro 66. Or, en adaptant le code fourni dans l'aide (que je vais d'ailleurs copier coller ici, ce sera plus clair) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    NomMenu = EnumèreMenu(MaFenêtre,1)
    TANTQUE NomMenu <> ""
    	Trace(NomMenu + ":" + ii)
    	j est entier = 1
    	NomSousMenu est une chaîne
    	NomSousMenu = EnumèreMenu(NomMenu, j) // lecture de la 1er option du menu
    	TANTQUE NomSousMenu <> ""
    		Trace(" " + NomSousMenu + ":" + j)
    		j++ // option suivante
    		NomSousMenu = EnumèreMenu(NomMenu, j)
    	FIN
    	ii++ // menu suivant
    	NomMenu = EnumèreMenu(MaFenêtre,ii)
    FIN
    Et donc, en utilisant ce code, je vois directement en faisant un trace que fichier -> utilisateur est désigné par 1. Normal, c'est la première option du menu fichier.

    J'ai utilisé toutes les propriétés qui me sont passées par la tête... Par exemple, valeur. Ca ne fonctionne pas du tout.

    Si quelqu'un a un élément de réponse, je le remercie d'avance

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Je pensais à un "marqueur", un boléen par ex.

    Lorsque la boucle détecte un nouveau menu, le boléen est vrai (par ex.)
    Si le parcourt des sous-menus détecte qu'il y a bien un sous-menu, la "marqueur" est mis à faux
    Et si le "marqueur" est faux, il faut un ? dans le menu.

  5. #5
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    473
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 473
    Points : 814
    Points
    814
    Par défaut
    Je te remercie, je vais tenter d'utiliser ça.

    Merci

    EDIT : j'ai trouvé comment je vais utiliser cette méthode : D'abord remplir à l'ancienne manière.
    Ensuite, étudier chaque option contenant un (?), et à chaque fois, si elle possède un sous menu, effacer ce (?).
    Ce sera donc prêt pour la prochaine mise à jour...

    Encore merci !

    EDIT : ben finalement, je suis loin d'avoir fini... Utiliser MenuLibellé(ii) permet d'obtenir le libellé de l'objet ii, et utiliser EnumereMenu permet de connaitre le nom de l'option... Je n'arrive pas à faire le lien entre les deux... Argh. Bon, ben ça prendra plus de temps que prévu, beaucoup plus.
    Si quelqu'un a la solution miracle, je prends !

    Merci d'avance

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    MenuLibellé () : Identifie ou modifie le libellé d'une option de menu (menu contextuel ou déroulant).
    Ça devrait marcher non ?

    Par ex, si nécessité de mettre un ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LibDuMenu = MenuLibellé (LibDuMenu)+" ?"

  7. #7
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    473
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 473
    Points : 814
    Points
    814
    Par défaut
    Bon, j'avais laissé cette amélioration de coté en faisant des améliorations plus urgentes, je m'y suis remis aujourd'hui, en utilisant les indirection (le pont qui me manquait entre noms d'options, libellés d'options et numéro d'options).

    Voila donc le code que j'ai obtenu :

    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
     
    PROCEDURE lIndiqueSiAide()
    i est entier = 1
    NomMenu est une chaîne
    NomMenu = EnumèreMenu(MaFenêtre, 1) // lecture du 1er menu de la fenêtre
    TANTQUE NomMenu <> ""
    	Trace(NomMenu + ":" + MenuLibellé(menu,{NomMenu,indChamp}) + {NomMenu,indChamp})
    	j est entier = 1
    	NomSousMenu est une chaîne
    	NomSousMenu = EnumèreMenu(NomMenu, j) // lecture de la 1er option du menu
    	TANTQUE NomSousMenu <> ""
    		SI fFichierExiste( ComplèteRep(chemin) + "video\" +{NomSousMenu,indChamp} + ".asf") ALORS
    			MenuLibellé(menu,{NomSousMenu,indChamp}, MenuLibellé({NomSousMenu,indChamp}) + TAB + TAB + "(Aide voc.)")
    		FIN
    		j++ // option suivante
    		NomSousMenu = EnumèreMenu(NomMenu, j)
    	FIN
    	i++ // menu suivant
    	NomMenu = EnumèreMenu(MaFenêtre,i)
    FIN
    Il examine donc les options du menu principal, les sous options, etc... et pour chaque sous options, il regarde le numéro. Si une vidéo asf concernant cette sous option existe, il modifie le libellé pour l'indiquer.

    Je mets ce sujet là en résolu, en espérant qu'il puisse être utile à quelqu'un. Encore merci pour votre aide !

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

Discussions similaires

  1. [Free Pascal] Comment savoir quelle ligne du programme est la cause d'une erreur à l'exécution
    Par NOVICE76 dans le forum Free Pascal
    Réponses: 5
    Dernier message: 04/09/2014, 20h46
  2. Réponses: 2
    Dernier message: 03/05/2010, 12h04
  3. [AC-2003] Comment savoir si il y a un lien sur l'une de mes tables
    Par Nemesys007 dans le forum Modélisation
    Réponses: 1
    Dernier message: 26/06/2009, 15h10
  4. Ouvrir une fenêtre sans menu, sans barre d'adresse sous IE7
    Par mappy dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/03/2008, 11h57
  5. Réponses: 4
    Dernier message: 10/09/2002, 17h09

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