Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Menu contextuel Sam 8 Déc 2012 - 7:42 | |
| J'ai passé un peu de temps à analyser les codes de Nardo et de Bignono
Pour celui de Nardo: il y a un inconvénient, c'est l'affichage dans le menu contextuel, il faudrait pouvoir afficher l'option désirée à la place de "item 1" ou "item 2".... La présentation est nickel
Pour celui de Bignono: il manque la gestion de TOP et LEFT du GRID si on est trop près du bord du FORM.
Merci à tout les deux, on a de quoi s'inspirer.
A+ | |
|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Menu contextuel Dim 9 Déc 2012 - 8:27 | |
| Bonjour à tous les Panoramiciens! J'ai fait un autre menu contextuel avec des alphas hier matin dont voici le code: - Code:
-
dim i,t,x,y label clicdroit,menu,fin
init() timer 100:timer_interval 100,1:on_timer 100,clicdroit end
menu: timer_off 100 if clicked(3)=1 then ouvrir() if clicked(4)=1 then sauver() if clicked(5)=1 then goto fin if clicked(7)=1 then chercher() if clicked(8)=1 then remplacer() timer_on 100 return
clicdroit: if scancode<>2 then return timer_off 100 for i=11 to 16:left i,mouse_x_position(0):top i,mouse_y_position(0)+((i-11)*19):show i:next i t=0 while t=0 for i=12 to 16 if clicked(i)=1 then t=i:exit_for next i if clicked(0)=1 then t=16 if mouse_right_down(0)=1 then t=16 end_while if t=12 then ouvrir() if t=13 then sauver() if t=14 then chercher() if t=15 then remplacer() if t=16 then fermer() fermer() timer_on 100 return
sub ouvrir() message "ouverture du fichier" end_sub
sub sauver() message "enregistrement du fichier" end_sub
sub chercher() message "mot à chercher" end_sub
sub remplacer() message "remplacer un mot" end_sub
sub fermer() for i=11 to 16:hide i:next i end_sub
sub init() main_menu 1 sub_menu 2:parent 2,1:caption 2,"Menu" sub_menu 3:parent 3,2:caption 3,"Ouvrir":on_click 3,menu sub_menu 4:parent 4,2:caption 4,"Sauver":on_click 4,menu sub_menu 5:parent 5,2:caption 5,"Quitter":on_click 5,menu sub_menu 6:parent 6,1:caption 6,"Edition" sub_menu 7:parent 7,6:caption 7,"Chercher":on_click 7,menu sub_menu 8:parent 8,6:caption 8,"Remplacer":on_click 8,menu
for i=11 to 16:alpha i:hide i:color i,200,200,200:font_name i,"Consolas":font_size i,12:top i,(i-11)*20:height i,20:next i caption 11," MENU ":caption 12," Ouvrir ":caption 13," Sauver " caption 14," Chercher ":caption 15," Remplacer ":caption 16," Fermer " color 11,200,200,70 end_sub
fin: timer_off_all:terminate Et toute la journée ensuite, je me suis attaqué au problème du survol d'un objet par la souris. Ce matin, j'ai trouvé une solution qui fonctionne si on ne passe pas trop vite sur les alphas avec la souris. - Code:
-
dim i,t,x,y label clicdroit,menu,fin
init() timer 100:timer_interval 100,1:on_timer 100,clicdroit end
menu: timer_off 100 if clicked(3)=1 then ouvrir() if clicked(4)=1 then sauver() if clicked(5)=1 then goto fin if clicked(7)=1 then chercher() if clicked(8)=1 then remplacer() timer_on 100 return
clicdroit: if scancode<>2 then return timer_off 100 ' for i=11 to 16:left i,mouse_x_position(0):top i,mouse_y_position(0)+((i-11)*19):show i:next i for i=11 to 16:left i,abs(width(i)-mouse_x_position(0)):top i,mouse_y_position(0)+((i-11)*19):show i:next i ' for i=11 to 16:left i,abs(width(i)-mouse_x_position(0)):top i,abs(120-mouse_y_position(0)+((i-11)*19)):show i:next i t=0 while t=0 for i=12 to 16 x=mouse_x_position(i):y=mouse_y_position(i) ' if y<4 or y>(height(i)-4):color i,200,200,200:else:color i,50,50,240:end_if if (y>4 and y<(height(i)-4) and x>5 and x<(width(i)-5)):color i,50,50,240:else:color i,200,200,200:end_if if clicked(i)=1 then t=i:exit_for next i if clicked(0)=1 then t=16 if mouse_right_down(0)=1 then t=16 end_while if t=12 then ouvrir() if t=13 then sauver() if t=14 then chercher() if t=15 then remplacer() if t=16 then fermer() fermer() timer_on 100 return
sub ouvrir() message "ouverture du fichier" end_sub
sub sauver() message "enregistrement du fichier" end_sub
sub chercher() message "mot à chercher" end_sub
sub remplacer() message "remplacer un mot" end_sub
sub fermer() for i=11 to 16:hide i:next i end_sub
sub init() main_menu 1 sub_menu 2:parent 2,1:caption 2,"Menu" sub_menu 3:parent 3,2:caption 3,"Ouvrir":on_click 3,menu sub_menu 4:parent 4,2:caption 4,"Sauver":on_click 4,menu sub_menu 5:parent 5,2:caption 5,"Quitter":on_click 5,menu sub_menu 6:parent 6,1:caption 6,"Edition" sub_menu 7:parent 7,6:caption 7,"Chercher":on_click 7,menu sub_menu 8:parent 8,6:caption 8,"Remplacer":on_click 8,menu
for i=11 to 16:alpha i:hide i:color i,200,200,200:font_name i,"Consolas":font_size i,12:top i,(i-11)*20:height i,20:next i caption 11," MENU ":caption 12," Ouvrir ":caption 13," Sauver " caption 14," Chercher ":caption 15," Remplacer ":caption 16," Fermer " color 11,200,200,70 end_sub
fin: timer_off_all:terminate Mais ce matin, je viens de voir que Klaus a travaillé sur le survol des objets avec KGF.dll. Donc je pense que l'on peut appliquer son système sur ce dernier code afin d'avoir un meilleur résultat. A vous de voir. A+ | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Menu contextuel Dim 9 Déc 2012 - 11:50 | |
| Salut Bignono,
Je viens de tester tes dernier codes. J'ai été obligé de rectifier les espaces pour que le menu reste "carré" (Je suppose que çà vient pas de ton code, c'est un problème connu avec la copie de code sur le forum)
C'est pas mal. Le survol doit pas être trop rapide, mais çà marche. J'ai essayer de bricoler le timer_interval 100,1 mais c'est pas concluant.
Bravo A+ | |
|