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

Composants VCL Delphi Discussion :

Activer les éléments d'un popupmenu


Sujet :

Composants VCL Delphi

  1. #1
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut Activer les éléments d'un popupmenu
    Salut
    En Delphi, comment activer et désactiver les éléments d'un popupmenu sans le faire élément par élément?

    Merci.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Il n'y a pas de solution miracle, soit du désactive le menu parent, soit tu désactive un par un chaque menu (dans une boucle for par exemple)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i := 0 to MenuItem.Count - 1 do
      MenuItem.Items[i].Visible := False;
    MenuSpecialToujoursVisible.Visible := True;
    Voir aussi la TActionList ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    activer c'est pas dans le sens enabled plutot ?
    (c'est a dire grisé)

    @+ phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  4. #4
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    si si anapurna c'est dans le sens de grisé.
    pour ta solution Shell qui consiste à positionner visible à false ça ne m'intersse pas .

    quand j'ai posté cette question je pensé à vrai dire à une fonction API.

    merci tout de même .
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  5. #5
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Salut

    Citation Envoyé par Kelloucheaeh
    Salut
    En Delphi, comment activer et désactiver les éléments d'un popupmenu sans le faire élément par élément?
    si le but est de désactiver tous les éléments d'un menu popup, alors je vois pas l'intérêt d'afficher ce popupmenu justement.
    Certains elément du popumenu ne sont pas accessible dans un certain contexte alors l'evenement OnPopup est la pour nous permettre de conditionner les élements (1 ou plusieurs). si la totalité du menu contextuel est non accessible, pourquoi l'afficher?.
    Akim Merabet

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    imaginons que tu fasse une version demo il est quand même
    plus sympa de voir afficher les différente possibilité que ton menu autorise même si celui-ci n'est pas actif ou encore
    tu peut selon le contexte dire qu'il existe cette possibilité mais que pour le moment elle est inaccessible

    pour les api regarde du cote de @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  7. #7
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Re;
    je vous remercie tous pour vos réponses mais je précise qu'à un moment donné je suis dans l'obligation d'afficher mon menu contextuel (donc visible = True) avec tous les éléments grisés. N'est-il pas plus commode de faire ça en une seule opération du genre (Enabled = False) sauf que le composant popupmenu n'a pas cette propriété ?
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    as tu regarder la fonction api que je t'ai indiquer
    selon la façon dont tu as créer ton sous menu tu peut peut être
    affecter tout tes item en une fois

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  9. #9
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Moi, je proposerais de poser deux TPopupMenu, et d'initialiser dynamiquement la propriété PopupMenu du composant concerné dynamiquement, en fonction du contexte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if IsDemo then PopupMenu := PopupMenu1 else PopupMenu := PopupMenu2;

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par Kelloucheaeh Voir le message
    N'est-il pas plus commode de faire ça en une seule opération du genre (Enabled = False) sauf que le composant popupmenu n'a pas cette propriété ?
    Si c'est plus facile et le TMenuItem contient bien Enabled ... il suffisait de remplacer Visible par Enabled dans mon exemple ! Pourquoi vous cherchez tous Midi à 14h ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i := 0 to MenuItem.Count - 1 do
      MenuItem.Items[i].Enabled := False;
    MenuSpecialToujoursActif.Enabled := True;
    Attention à l'interaction avec les Actions d'une ActionList relié au MenuItem ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  11. #11
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Re
    Mais Shell ton bout de code est magnifique mais je ne cherche pas à manipuler les Items un par un.

    Je me disais peut être que l'API Windows allait me sauver mais hélas, même avec EnableMenuItem ne marche que pour les Items.

    donc y a quand même une différence entre midi et 14h.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  12. #12
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Euh c'est pas mais Shai Le Troll Méchant, je vends pas de l'essence, sinon je serais plus riche

    Sinon, j'ai donné l'exemple dans une boucle, mais aussi un pour un seul item avec un nom spécifique, mais en fait c'est quoi que tu veux faire, tu veux cacher le MainMenu carrément ??? Pour cela suffit d'enlever de la propriété Menu de la Forme ... et donc ça le cache, si tu veux rendre disabled les menus à la racine (ceux vu tout en haut de la fenêtre), suffit d'appliquer la boucle, ... en quoi ce pose-t-il un problème, c'est faire une boucle pour manipuler chaque item un par un qui te gêne ? j'espère que non car les boucles c'est utilisée partout genre DataSet, Items, Strings, Collection, Array ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Activer / griser les éléments d'un menu
    Par Silverstone dans le forum Visual C++
    Réponses: 4
    Dernier message: 04/11/2006, 23h16
  2. [CR 10] Séparer les éléments d'un groupe
    Par Giovanny Temgoua dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 07/04/2005, 14h36
  3. algorithme de tri tableau :afficher que les éléments unique
    Par sofiane61 dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 31/03/2005, 19h50
  4. Réponses: 15
    Dernier message: 21/06/2004, 16h52
  5. Réponses: 2
    Dernier message: 11/08/2003, 09h43

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