salut,
j'ai une application MDI sous Delphi 2009, ma question et comment je peux empêcher l'accès au barre de menu lorsqu'une fenêtre MDIChild est ouverte, et autoriser l'accès lorsqu'aucune fenêtre est ouverte.
Merci.
salut,
j'ai une application MDI sous Delphi 2009, ma question et comment je peux empêcher l'accès au barre de menu lorsqu'une fenêtre MDIChild est ouverte, et autoriser l'accès lorsqu'aucune fenêtre est ouverte.
Merci.
Bonjour,
en positionnant les actions derrières les menus à disabled au moment ou tu ouvre un mdichild. Tu incrémente également un compteur. Lorsque tu ferme un mdichild, tu décrémente le compteur et tu remet à enabled lorsqu'il n'y a plus de mdichild d'ouverte.
ainsi MonAction.Enabled := ( MonCompteur = 0) devrait gérer correctement l'état de l'action en fonction du fait qu'il y ait ou pas de mdichild d'ouvertes.
@++
Dany
Mon Tutoriel sur le développement Intraweb
N'oubliez pas de consulter les FAQ Delphi ainsi que les Cours et tutoriels sur la programmation Delphi
ce n'est qu'une suggestion mais ?
en ne fusionnant pas les menus
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
ou tout simplement en mettant a False la propriété Enabled des TMenuItem principaux (Fichier, Edition, Fenêtre, ...) lorsque tu ouvres une fiche MDIChild (TForm.MDIChildCount > 0).
@skywaukers
as tu déjà réussi à mettre une action sur un menu principal (je veux dire une action sur Fichier ou Edition par exemple). moi je n'y arrive pas.
sinon pour faire comme tu dis on peut utiliser les action pour chaque élément du menu (Fichier->ouvrir, Fichier->Enregistrer, ...) et dans l'évènement OnUpdate de chaque action on active l'action uniquement lorsque MDIChildCount = 0.
@Maître Sergio
oui si son souci c'est de ne pas fusionner les menus de la fiche enfant avec ceux de la fiche principale.
c'est un moyen simple et efficaceEnvoyé par Evarisnea
lorsque j'ai émis cette suggestion , je ne l'avais pas tester , ce qui viens d'être fait en D2010 pas d'Automerge de menu sur la fiche enfant et le tour est joué puisque on ne voit plus le menu de la fiche principale , on ne peut donc pas y accéder
Avec l'autoMerge on peut encore joué sur le groupIndex pour n'avoir que certaines parties de chacun des deux menus
Maintenant , s'il s'agit de grisé le menu de la Form Principale c'est autre chose , et effectivement il faut se coltiner les propriété Enabled
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
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