[VB] : gestion "pro" d'une interface

: gestion "pro" d'une interface [VB] - Programmation

Marsh Posté le 05-06-2001 à 09:41:55    

vala vala ...
j'ai une interface, avec plein de boutons et demenus redondants afin de permettre facilement à un non initié comment faire ce qu'il veut. De meme, au lieu de lui dire "Eh non t'as pas fait tel calcul avant !" quand il clique sur un menu, ben certains menu sont grisés et sont dégrisés plus tard ...
alors voila : j'aimerais savoir comment il faut faire pour bien gerer cela car je commence à avoir beaucoup de menus et je trouve que c'est pas tres clair pour la relecture.
jusqu'a y'a pas longtemps ca faisait :
if FormPrincipale.MenuCalculXYZ.Enabled And FormPrincipale.MenuCalculXYZ.Checked then
 
et je vous raconte pas lorsqu'il y a plusieurs menus pour la condition, j'ai des if imbriques de 10 Km de long et c'est tres lourd à lire ...
alors j'ai commencé a mettre des booleens globaux que je gere quand le mec clique sur les menus ... mais il en faut plusieurs, un pour quand le calcul est fait, un pour si il veut afficher le resultat du calcul ... et faut 10 lignes d'initialisation dans le load de ma form ...
alors j'ai encore changé pour .... une structure, un record, un type quoi ...
Type _Etat
    A As Boolean
    B As Boolean
End Type
 
et je fait 2 variables globales : Calcul et Affiche pour si le calcul est fait et si on veut l'afficher
 
If Calcul.A And Affiche.A then ...
 
bon c'est un peu plus lisible, moins brouillon ...
mais je me dit que c'est un peu strange quand meme comme solution. Alors je voudrais savoir c'est quoi la vrai solution, celle qui est utilisee par les grosses applis genre Word avec plein de boutons, qui ne font pas toujours la meme chose, qui peuvent etre grisés ... :??: :??:


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 05-06-2001 à 09:41:55   

Reply

Marsh Posté le 05-06-2001 à 13:25:20    

En copiant sur un exemple Crosoft, j'utilise des variables BOOL (ou autre selon besoin) qui servent d'indicateur d'"état" (fichier lu, calcul fait, fichier sauvé, etc..).
On écrit ensuite un module qui fait "chef d'orchestre" appelé à chaque changement de contexte. Il gère les menus en fonction de chaque variable d"'état".
if (A and B and not C) then menu1.grisé else menu1.pasgrisé
menu2.enabled = (B AND C)
etc..
 
On peut même y mettre aussi (lisible ?) la gestion de boutons (visible, enablé, ..).
 
Si on modifie les menus, c'est plus facile à retrouver pour modif que quand dispersé dans de nombreuses sous-routines.
 
Les menus grisés (disablés) ne sont pas fonctionnels. Si click dessus, pas d'action.
 
Une variante consiste à faire dans ce module une liste des états des menus en fonction de l'action : "select case Action" puis des case Ouverture, case Sauvegarde, case Calcul_Truc, mais pas valable si 50 actions distinctes possibles (lourd).
 
Dans ce contexte, les menus reflètent l'état des variables, mais on ne passe pas "son temps" à tester les menus (ce qui dans l'absolu revient au même : variable gérée par VB (VC, BC, ..)).
 
Y a sans doute mieux (suis simple amateur (loisirs)).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed