Salut
En Delphi, comment activer et désactiver les éléments d'un popupmenu sans le faire élément par élément?
Merci.
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
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)
Voir aussi la TActionList ...
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;
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
salut
activer c'est pas dans le sens enabled plutot ?
(c'est a dire grisé)
@+ phil
Blaise PascalNous 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.
PS : n'oubliez pas le tag
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
Salut
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.Envoyé par Kelloucheaeh
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
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part EnableMenuItem
Blaise PascalNous 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.
PS : n'oubliez pas le tag
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
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
Blaise PascalNous 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.
PS : n'oubliez pas le tag
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;
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 ???
Attention à l'interaction avec les Actions d'une ActionList relié au MenuItem ...
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;
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
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager