Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Un menu animé ! Dim 28 Juil 2019 - 20:21 | |
| Bonjour à tous ! Pour tuer le temps je viens de faire ce petit menu sans prétention. Il permet d'escamoter les sous menu du menu principal. Vu d'ici je vous l'accorde, il est plutôt austère mais imaginez le agrémenté d’icônes et de diverses couleurs... En plus il est élaboré avec des PANEL donc libre à vous de le modifier à votre convenance. PS : concernant l'affichage plus ou moins rapide jouez sur les PAUSE en ligne 67, 80, 85 et 92. - Spoiler:
- Code:
-
' MENU ANIME ' MINIBUG ' 23.08.2019
LABEL menu , affichage_menu
DIM a% , b% , c% , d% , e% , f% , g% , t$ DIM nb_max% , nb_menu% , Syn% , cl% , no% : no%=1
' *************************************************************
' RENSEIGNEZ LES 3 LIGNES CI_DESSOUS AVEC : ' - LE TEMPS D'AFFICHAGE ' - LA LARGEUR DE CHAQUE CELLULE DU MENU ' - LA HAUTEUR DE CHAQUE CELLULE DU MENU
DIM pause% : pause%=1 : ' Intervale déterminant le mouvement du menu DIM largeur% : largeur%=110 : ' determine la largeur des segments du menu DIM hauteur% : hauteur%=25 : ' determine la hauteur des segments du menu
' RENSEIGNEZ CHAQUE LIGNE DU MENU DE LA FACON SUIVANTE : ' EN PREMIER LE NOM DU MENU RACINE PUIS LE NOMBRE DE SOUS-MENU SUIVI DU NOM DE CHAQUE SOUS-MENU ' ATTENTION A BIEN LAISSER LA DERNIERE LIGNE DE DATA AVEC 'FIN' UNIQUEMENT
DATA "Fichier" , 5 , "Nouveau" , "Ouvrir" , "Enregistrer" , "Enregistrer sous" , "fermer" DATA "Edition" , 7 , "Annuler" , "Restaurer" , "Couper" , "Copier" , "Coller" , "Rechercher" , "Remplacer" DATA "Outils" , 7 , "Outil_1" , "Outil_2" , "Outil_3" , "Outil_4" , "Outil_5" , "Outil_6" , "Outil_7" DATA "Aide" , 4 , "Aide partie 1" , "Aide partie 2" , "Aide partie 3" , "Aide partie 4" DATA "A_propos" , 1 , "A_propos_1" DATA "FIN"
' POUR TOUS LES AUTRES PARAMETRES C'EST LE PROGRAMME QUI S'EN CHARGE...
' *************************************************************
REPEAT READ t$ : IF t$="FIN" THEN EXIT_REPEAT READ b% : FOR c%=1 TO b% : READ t$ : NEXT c% nb_menu%=nb_menu%+1 IF nb_max%<b% THEN nb_max%=b% UNTIL t$="FIN"
DIM Num_Menu_Parent%(nb_menu%) DIM Nb_Sous_Menu%(nb_menu%) DIM Num_Sous_Menu%(nb_menu%,nb_max%)
RESTORE
SYNEDIT no% : PARENT no%,0 : FULL_SPACE no% : Syn%=no% : no%=no%+1
FOR a%=1 TO nb_menu% PANEL no% : PARENT no%,0 : LEFT no%,a%*largeur%-largeur% : WIDTH no%,largeur% : HEIGHT no%,hauteur% : FONT_SIZE no%,10 : COLOR no%,60,60,60 : FONT_COLOR no%,255,255,255 ON_CLICK no%,menu : READ t$ : CAPTION no%,t$ : Num_Menu_Parent%(a%)=no% : no%=no%+1 READ t$ : Nb_Sous_Menu%(a%)=VAL(t$) FOR b%=1 TO Nb_Sous_Menu%(a%) PANEL no% : PARENT no%,0 : LEFT no%,a%*largeur%-largeur% : WIDTH no%,largeur% : HEIGHT no%,0 : FONT_SIZE no%,10 : COLOR no%,60,60,60 : FONT_COLOR no%,255,255,255 ON_CLICK no%,menu : READ t$ : CAPTION no%,t$ : Num_Sous_Menu%(a%,b%)=no% : no%=no%+1 NEXT b% NEXT a%
ON_MOUSE_MOVE Syn%,affichage_menu
END
menu: cl%=NUMBER_CLICK FOR a%=1 TO nb_menu% IF cl%=Num_Menu_Parent%(a%) THEN menu(a%,Nb_Sous_Menu%(a%)) : EXIT_FOR NEXT a% FOR e%=1 TO nb_menu% FOR f%=1 TO nb_max% IF cl%=Num_Sous_Menu%(e%,f%) OFF_MOUSE_MOVE Syn% : cacher_menu(e%) : ON_MOUSE_MOVE Syn%,affichage_menu IF TOP(Num_Menu_Parent%(1))=0 FOR b%=0 TO (0-hauteur%) STEP -1 FOR c%=1 TO nb_menu% : TOP Num_Menu_Parent%(c%),b% : NEXT c% PAUSE pause% NEXT b% END_IF
' ICI TRAITEMENT DES CLICS MESSAGE CAPTION$(Num_Sous_Menu%(e%,f%)) ' IF cl%=Num_Sous_Menu%(1,1) THEN MESSAGE "Nouveau" ' IF cl%=Num_Sous_Menu%(1,2) THEN MESSAGE "Ouvrir" ' IF cl%=Num_Sous_Menu%(1,3) THEN MESSAGE "Enregistrer" ' ' IF cl%=Num_Sous_Menu%(2,1) THEN MESSAGE "Annuler" ' ' IF cl%=Num_Sous_Menu%(3,1) THEN MESSAGE "Outil_1" ' ' etc... EXIT_FOR END_IF NEXT f% NEXT e% RETURN
affichage_menu: OFF_MOUSE_MOVE Syn% IF MOUSE_Y_POSITION(Syn%)<10 IF TOP(Num_Menu_Parent%(1))<>0 FOR b%=(0-hauteur%) TO 0 FOR a%=1 TO nb_menu% : TOP Num_Menu_Parent%(a%),b% : NEXT a% PAUSE pause% NEXT b% END_IF ELSE FOR c%=1 TO nb_menu% : cacher_menu(c%) : NEXT c% IF TOP(Num_Menu_Parent%(1))=0 FOR b%=0 TO (0-hauteur%) STEP -1 FOR c%=1 TO nb_menu% : TOP Num_Menu_Parent%(c%),b% : NEXT c% PAUSE pause% NEXT b% END_IF END_IF ON_MOUSE_MOVE Syn%,affichage_menu RETURN
SUB cacher_menu(cach%) IF TOP(Num_Sous_Menu%(cach%,1))<>0 FOR a%=1 TO nb_menu% IF cach%=a% THEN d%=Nb_Sous_Menu%(a%) : EXIT_FOR NEXT a% FOR b%=hauteur% TO 0 STEP -1 FOR a%=1 TO d% TOP Num_Sous_Menu%(cach%,a%),(a%*b%)+hauteur%-b% : HEIGHT Num_Sous_Menu%(cach%,a%),b% : IF b%=0 THEN TOP Num_Sous_Menu%(cach%,a%),0 NEXT a% PAUSE pause% NEXT b% END_IF END_SUB
SUB menu(m%,n%) FOR c%=1 TO nb_menu% IF c%<>m% AND TOP(Num_Sous_Menu%(c%,1))<>0 FOR a%=1 TO nb_menu% IF c%=a% THEN d%=Nb_Sous_Menu%(a%) : EXIT_FOR NEXT a% FOR b%=hauteur% TO 0 STEP -1 FOR a%=1 TO d% TOP Num_Sous_Menu%(c%,a%),(a%*b%)+hauteur%-b% : HEIGHT Num_Sous_Menu%(c%,a%),b% : IF b%=0 THEN TOP Num_Sous_Menu%(c%,a%),0 NEXT a% PAUSE pause% NEXT b% END_IF NEXT c% IF TOP(Num_Sous_Menu%(m%,1))=0 FOR b%=1 TO hauteur% FOR a%=1 TO n% TOP Num_Sous_Menu%(m%,a%),((a%*b%)+hauteur%-b%) HEIGHT Num_Sous_Menu%(m%,a%),b% NEXT a% PAUSE pause% NEXT b% ELSE FOR b%=hauteur% TO 0 STEP -1 FOR a%=1 TO n% TOP Num_Sous_Menu%(m%,a%),(a%*b%)+hauteur%-b% : HEIGHT Num_Sous_Menu%(m%,a%),b% IF b%=0 THEN TOP Num_Sous_Menu%(m%,a%),0 NEXT a% PAUSE pause% NEXT b% END_IF END_SUB
Dernière édition par Minibug le Ven 23 Aoû 2019 - 19:41, édité 4 fois | |
|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Un menu animé ! Ven 23 Aoû 2019 - 15:58 | |
| Bonjour à tous ! J'ai un peu amélioré le principe. Le menu se cache maintenant dès que l'on est plus dessus. Et à l'inverse s'affiche dès que la souris est dans les 10 premiers pixels en haut de la fenêtre. Je vais étudier la possibilité d'ajouter des icônes. C'est toujours plus sympa... Le code ci-dessus est mis à jour. | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Un menu animé ! Ven 23 Aoû 2019 - 17:01 | |
| Pas mal ce menu ! Mais j'ai eu du mal à le faire fonctionner sur l'éditeur Panoramic. J'ai été contraint de Supprimer FULL_SPACE sur le SYNEDIT pour que ça marche. En tous cas l'animation est réussi. Bravo ! A+ | |
|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Un menu animé ! Ven 23 Aoû 2019 - 18:40 | |
| Salut Jean Claude ! Je viens encore de l'améliorer un peu ! Maintenant on peut très facilement le paramétrer pour chacun... Toute est expliqué dans les lignes qui sont entre les étoiles. EDIT DE 19:42 : Encore plus de 'Slide' avec le menu principal qui lui aussi s'affiche et se cache sur le même principe... | |
|