|
| Menu coulissant (sliding menu) sur appli Windows |
| Iniciado por Maxime², 28,may. 2019 16:19 - 8 respuestas |
| |
| | | |
|
| |
Miembro registrado 10 mensajes |
|
| Publicado el 28,mayo 2019 - 16:19 |
Bonjour,
Je cherche à modifier le menu principal de mon application en le mettant sur la gauche comme on peut le faire sur Windev Mobile avec les fenêtres coulissantes, mais ceci sur Windev 24 pour appli Windows. Y a-t-il une solution assez simple permettant de cacher le menu et de le faire apparaître au survol (avec préférablement une animation de glissade de gauche vers droite, et en sortie de survol droite vers gauche) ?
J'ai pensé à le faire en augmentant sa position d'un px dans une boucle, mais ça peut peut-être faire saccadé.
Merci |
| |
| |
| | | |
|
| | |
| |
| Publicado el 28,mayo 2019 - 23:34 |
Bonjour, je n'ai pas la solution , mais si qqun a la soluce ou si PC-SOFT développe cela je suis preneur... |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 953 mensajes |
|
| Publicado el 29,mayo 2019 - 11:57 |
Bonjour Maxime²
Alors pour gérer ce genre de menu, vous avez les fonctions AnimationPrepare() et AnimationJoue() de Windev.
Par exemple, dans votre fenêtre, placer un champ disposition (ou autre) complètement à gauche de votre fenêtre (visible mais hors écran )
Ajoutez un événement sur votre fenêtre pour gérer votre souris : ( dans le code de fin d'init de votre fenêtre )
Evénement(IHM_Check_Cursor_Pos,".*",0x0200)
Procedure IHM_Check_Cursor_Pos()
SELON PoidsFaible(CurseurPos(cpFenêtre)) CAS 0 À 15 ihm_show_slide_menu() CAS > (2+Disposition1..Largeur+5) ihm_hide_slide_menu() AUTRE CAS FIN
Puis deux petites fonctions pour gérer l'animation de votre champ :
Procedure ihm_show_slide_menu()
AnimationPrepare(FEN_SansNom1,2,Disposition1..Y,Disposition1..Largeur,Disposition1..Hauteur) Disposition1..X=2 AnimationJoue(animDéfilementDroite)
Procedure ihm_hide_slide_menu()
AnimationPrepare(FEN_SansNom1,2,Disposition1..Y,Disposition1..Largeur,Disposition1..Hauteur) Disposition1..X=Disposition1..XInitial AnimationJoue(animDéfilementGauche)
çà devrait donner un rendu plutôt satisfaisant à vous de voir 
bon dèvMensaje modificado, 29,mayo 2019 - 12:01 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 29,mayo 2019 - 13:02 |
Dans le même style que Christophe, mais j'utiliserai directement AnimationJoueSurPropriétéChamp()
-- Cordialement,
Philippe SAINT-BERTIN |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 10 mensajes |
|
| Publicado el 29,mayo 2019 - 14:48 |
Wow merci beaucoup, je me suis inspiré de vos réponses, j'ai essayé la méthode de Christophe, mais qui semblait ne pas marcher sur mon champ disposition. J'ai regardé du côté de AnimationJoueSurPropriétéChamp() et j'ai donc ceci :
(Champ disposition remplacé par un libellé avec couleur de fond)
SI estDansMenu = Faux ALORS estDansMenu = Vrai AnimationJoueSurPropriétéChamp(LIB_Menu, "X", -190, -70, 200ms) BTN_SansNom1..Visible = Vrai FIN
SI estDansMenu = Faux ALORS BTN_SansNom1..Visible = Faux AnimationJoueSurPropriétéChamp(LIB_Menu, "X", -70, -190, 200ms) FIN
estDansMenu est un booléen que je mets à faux lors du survol de la fenêtre, ce qui a pour effet de fermer le menu au départ de la souris, ainsi le menu reste ouvert au survol d'un bouton du menu. Voici le rendu :


Merci pour vos pistes, bon dev à tous  |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 10 mensajes |
|
| Publicado el 29,mayo 2019 - 15:00 |
Petit changement, j'ai retiré le code de sortie de survol du libellé et j'ai fait ce code en survol de la fenêtre :
SI estDansMenu = Vrai ALORS estDansMenu = Faux BTN_SansNom1..Visible = Faux AnimationJoueSurPropriétéChamp(LIB_Menu, "X", -70, -190, 200ms) FIN
Sinon ça faisait que si l'on quittait la fenêtre par la gauche et qu'on revenait par droite/haut/bas, le menu ne se fermait pas jusqu'à un nouveau survol  Mensaje modificado, 29,mayo 2019 - 15:13 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 72 mensajes |
|
| Publicado el 29,mayo 2019 - 22:29 |
Bonjour,
N'utilise pas un Libellé pour ton fond mais plutôt un Superchamp avec tes boutons dedans.
Si tu as plusieurs bouton, le déplacement devient saccadé car le AnimationJoueSurPropriétéChamp va les déplacer 1 à 1 si on peut dire.
En utilisant AnimationJoueSurPropriétéChamp sur un Superchamp, c'est le Superchamp qui se déplace (incluant les champs qui y sont inclus), l'animation devient fluide.
Et en plus c'est beaucoup plus simple à gérer un seul champ  |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 10 mensajes |
|
| Publicado el 31,mayo 2019 - 09:58 |
Jonathan a écrit :
Bonjour,
N'utilise pas un Libellé pour ton fond mais plutôt un Superchamp avec tes boutons dedans.
Si tu as plusieurs bouton, le déplacement devient saccadé car le AnimationJoueSurPropriétéChamp va les déplacer 1 à 1 si on peut dire.
En utilisant AnimationJoueSurPropriétéChamp sur un Superchamp, c'est le Superchamp qui se déplace (incluant les champs qui y sont inclus), l'animation devient fluide.
Et en plus c'est beaucoup plus simple à gérer un seul champ
Merci pour l'astuce, pour le coup je n'avais jamais utilisé de SuperChamp (je n'ai que 2 mois ancienneté aussi) et c'est vraiment pratique. Avec le libellé je ne gérais pas les champs un par un, j'avais mis toutes mes options dans un champ disposition et je faisais ..Visible dessus après avoir fait l'animation d'ouverture et le cachait avant l'animation de fermeture. C'est quand même plus propre avec un SC 
Merci |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 46 mensajes |
|
| Publicado el 05,junio 2019 - 22:53 |
Bonjour, Merci à toi Maxime, pour ton idée lumineuse. Cette option, je l'ai faite, et rien à dire que c'est du top. D'ailleurs, je l'ai appliqué sur un champ Ruban (associé à un super champ), et le résultat est aussi top. Pour donner le choix à l'utilisateur, j'ai ajouté un interrupteur en haut à droite(avec mémorisation de la valeur) : si coché, l'affichage du ruban est figé. si décoché, affichage ou non est géré par le survol. |
| |
| |
| | | |
|
| | | | |
| | |
|