Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| bouton roll-over | |
| | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: bouton roll-over Mer 27 Mar 2013 - 13:10 | |
| Ce petit appel, s'adresse à plus particulièrement à Klaus...
Il y a quelque temps, il me semble que tu avais publié un bout de code traitant d'un effet "roll-over" sur un bouton. Je ne le retrouve plus sur le forum. Pourrais tu me rappeler le sujet ?
Merci ... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: bouton roll-over Mer 27 Mar 2013 - 14:04 | |
| Je ne sais pas exactement à quoi tu fais allusion. en tout cas, je te donne les liens suivants: Un bouton qui bougeBoutons avec images et textes simulésSinon, tu peux regarder dans les fonctions de KGF.dll, catégorie "interception des clics sur un objet". Il y a la possibilité de réagir sur l'entrée et/ou la sortie de la souris dans un objet, donc début et fin de survol. C'est la routine ClickSetLink qu'il faut regarder, puis l'ensemble des infos de cette section pour comprendre le mécanisme. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: bouton roll-over Mer 27 Mar 2013 - 14:34 | |
| Réponse bis: Voici un petit programme de démo montrant comment on peut gérer le survol pour différents objets Panoramic: - Code:
-
' test_mouse_over.bas
label changer_type dim res%
' === définition de quelques objets dont le survol est contrôlé alpha 1 : top 1,10 : left 1,10 : caption 1,"Votre nom:" edit 2 : top 2,10 : left 2,70 : width 2,200 container 10 : top 10,40 : left 10,10 : caption 10,"Fiche personnelle" width 10,400 : height 10,300 alpha 11 : parent 11,10 : top 11,20 : left 11,10 : caption 11,"Adresse:" memo 12 : parent 12,10 : top 12,20 : left 12,80 width 12,200 : height 12,50 alpha 13 : parent 13,10 : top 13,80 : left 13,10 : caption 13,"Numéro SS:" edit 14 : parent 14,10 : top 14,80 : left 14,80 : width 14,200 list 15 : top 15,10 : left 15,430 : height 15,400 item_add 15,"aaaaaa" item_add 15,"bbbbbb" item_add 15,"cccccc" check 16 : top 16,340 : left 16,10 : caption 16,"Surveillance permanente" width 16,150 : mark_on 16 : on_click 16,changer_type check 17 : top 17,360 : left 17,10 : caption 17,"Sélection dans liste par glissement" width 17,250 : mark_off 17
' objet pour la trace du programme alpha 99 : top 99,400 : left 99,10 : caption 99,"Repos" alpha 98 : top 98,420 : left 98,10 : caption 98,"Rien"
KGF_initialize("KGF.dll")
create_mouse_over(8,100,1) add_mouse_over(1,0,0,0,0) add_mouse_over(2,0,255,0,0) add_mouse_over(11,10,0,0,0) add_mouse_over(12,10,0,255,255) add_mouse_over(13,10,0,0,0) add_mouse_over(14,10,0,255,255) add_mouse_over(10,0,0,0,0) add_mouse_over(15,0,255,255,0)
end
changer_type: mouse_over_type(checked(16)) return
' cette procédure est appelée chaque fois que le curseur entre ' dans un des objets surveillés, ou sur la form 0 ' flag%=1 ==> on est dans la form ' flag%=0 ==> on est en-dehors de la form sub on_mouse_over(flag%,obj%) if flag%=1 caption 99,str$(mouse_over_x%)+","+str$(mouse_over_y%)+" sur objet "+str$(obj%)+" "+str$(mouse_over_n%) ' à titre d'exemple, on va interdire l'entrée dans le champ "adresse" ' (objet 12) si le nom est vide (objet 2) if obj%=12 if trim$(text$(2))="" MousePosition(left(12)+width(12)+left(10)+10,top(12)+top(10)+10) end_if end_if if object_type(obj%)=8 GetListBoxItemFromPoint(obj%,mouse_over_x%, mouse_over_y%) if GetListBoxItemFromPoint>0 if checked(17)=1 then SelectListBoxItem(handle(obj%),GetListBoxItemFromPoint) end_if caption 99,str$(mouse_over_x%)+","+str$(mouse_over_y%)+" sur objet "+str$(obj%)+" "+str$(mouse_over_n%)+" item "+str$(GetListBoxItemFromPoint) end_if else caption 99,"Sorti" end_if GetObjectHandleUnderCursor() caption 98,"Han dle: "+str$(GetObjectHandleUnderCursor) end_sub
#INCLUDE "mouse_over_SUB.bas" #INCLUDE "KGF_SUB.bas"
| |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: bouton roll-over Mer 27 Mar 2013 - 19:55 | |
| klaus une erreur survient à la ligne 31 (157) Call of unknown SUB , line: 31 | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re Mer 27 Mar 2013 - 19:57 | |
| Merci Klaus, Je vais regarder çà ce soir.J'avais oublié de me déconnecter avant de partir, d'où mon temps de réaction... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 27 Mar 2013 - 22:00 | |
| @ Pascal 10000, Je pense qu' il manque un tiret du 8 entre mouse et position ( mouse_position N,x,y)edit : J'ai dit une bêtise, c'est une sub | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 27 Mar 2013 - 22:13 | |
| J' ai écris çà mais....rien - Code:
-
' constantes Dim Dos$ : Dos$="C:\Users\Yannick\Desktop\Panoramic Essais\Essais O_Toll_Bar()\Icones\"
dim M_TB_deb%,M_TB_fin% ' varibles liées à la fonction verif_souris Dim i0%,res%,res2% ' etiquettes d'évènements Label Clic,Verif_souris,close
Dll_on "KGF.dll"
O_Form(0,0,1,0,0,400,(25*20)+16,"") O_Tool_Bar(1,0,1) O_Insert_Button_TB(10,Dos$+"PasteFromClipboard")
timer M_TB_fin%+1 :timer_interval M_TB_fin%+1,50 :on_Timer M_TB_fin%+1,Verif_souris
on_close 0,close
end
Sub O_Tool_Bar(No%,P%,V%) Dim_local i%,img$,L%,x% img$=Dos$+"Icone_vierge.bmp" L%=-25 M_TB_deb%=No% M_TB_fin%=(width(P%)-16)/25 Dim Tab$(M_TB_fin%,2) for i%=M_TB_deb% to M_TB_fin% L%=L%+25 Tab$(i%,1)=img$ Tab$(i%,2)=img$ O_scene2d(i%,0,1,0,L%,25,25):file_load i%,Tab$(i%,1):inactive i% :cursor_point i% next i% End_Sub
Sub O_Insert_Button_TB(P%,Type$) dim_local x% active P% Tab$(P%,1)=Type$+".bmp" Tab$(P%,2)=Type$+"_Select.bmp" file_load P%,Tab$(P%,1) on_click P%,Clic End_Sub
Clic: message "Ok!" return
Verif_souris: for i0%=1 to M_TB_fin% if active(i0%)=1 caption 0,str$(handle(i0%)) res%=dll_call2("ClickSetLink",handle(i0%),5) if res%=1 :file_load i0%,Tab$(i0%,2):end_if res2%=dll_call2("ClickSetLink",handle(i0%),6) if res2%=1 :file_load i0%,Tab$(i0%,1):end_if end_if next i0% return
Close: Timer_off (M_TB_fin%+1) Dll_off return
#include "Objet_Lib.bas" Vois tu ce qui ne va pas ? je te te mets un lien pour le dossier complet : Panoramic Essais.zip | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 27 Mar 2013 - 22:37 | |
| @ Klaus, #INCLUDE "mouse_over_SUB.bas" #INCLUDE "KGF_SUB.bas" Y en a une que je ne connaissais pas ... , tu l'as caché où ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: bouton roll-over Jeu 28 Mar 2013 - 0:35 | |
| Oups... Désolé. Vraiment désolé. Voici le module qui manque: - Code:
-
' mouse_over_SUB.bas
' le programme principal doit contenir une procédure on_mouse_over(). ' Cette procédure sera appelée chaque fois que le curseur entre dans ' un objet surveillé. Avant d'appeler cette procédure, le programme ' effectue un éventuel changement de couleur, mais cette procédure est ' appelée pour tout objet scruté dans lequel le curseur entre, même ' s'il n'y a pas de changement de couleur. ' ' sub on_mouse_over(flag%,obj%) ' if flag%=1 ' traiter ici l'évènement "dans la form" pour objet obj% ' else ' traiter ici l'évènement "en-dehors de la form" ' end_if ' end_sub
message "mouse_over: ce module ne peut pas être exécuté directement." terminate
' ===== routine évènement pour le timer (usage internne) mouse_over_scruter: timer_off mouse_over_ntimer% GetMousePosition(handle(0)) mouse_over_x% = GetMousePositionX% mouse_over_y% = GetMousePositionY% if (mouse_over_x%>=0) and (mouse_over_y%>=0) mouse_over_kold% = mouse_over_k% mouse_over_kiold% = mouse_over_ki% mouse_over_k% = 0 mouse_over_ki% = 0 for mouse_over_i%=1 to mouse_over_nobj% if mouse_over_x%>=mouse_over_gauche%(mouse_over_i%) if mouse_over_x%<(mouse_over_gauche%(mouse_over_i%)+mouse_over_largeur%(mouse_over_i%)) if mouse_over_y%>=mouse_over_haut%(mouse_over_i%) if mouse_over_y%<(mouse_over_haut%(mouse_over_i%)+mouse_over_hauteur%(mouse_over_i%)) mouse_over_k% = mouse_over_objets%(mouse_over_i%) mouse_over_ki% = mouse_over_i% exit_for end_if end_if end_if end_if next mouse_over_i% if (mouse_over_k%<>mouse_over_kold%) or (mouse_over_type%=1) if mouse_over_kold%>0 if mouse_over_colorer%(mouse_over_kiold%)=1 then color mouse_over_kold%,255,255,255 end_if if mouse_over_k%>0 if mouse_over_colorer%(mouse_over_ki%)=1 color mouse_over_k%,mouse_over_RGB%(mouse_over_ki%,1),mouse_over_RGB%(mouse_over_ki%,2),mouse_over_RGB%(mouse_over_ki%,3) end_if end_if mouse_over_n% = mouse_over_n% + 1 on_mouse_over(1,mouse_over_k%) end_if else on_mouse_over(0,0) end_if timer_on mouse_over_ntimer% return
' ===== création du système mouse_over ' maxobj% ==> nombre maxi d'objets à scruter ' ntimer% ==> un numéro d'objet disponible pour créer le timer interne ' typ% ==> type de surveillance 0=changement d'objet 1=continuel sub create_mouse_over(maxobj%,ntimer%,typ%) if label("mouse_over_scruter")=0 then label mouse_over_scruter if variable("mouse_over_nobj%")=0 dim mouse_over_maxobj% : mouse_over_maxobj% = maxobj% dim mouse_over_ntimer% : mouse_over_ntimer% = ntimer% dim mouse_over_type% : mouse_over_type% = typ% dim mouse_over_nobj% dim mouse_over_k% dim mouse_over_ki% dim mouse_over_kold% dim mouse_over_kiold% dim mouse_over_i% dim mouse_over_n% dim mouse_over_x% dim mouse_over_y% dim mouse_over_objets%(mouse_over_maxobj%) dim mouse_over_gauche%(mouse_over_maxobj%) dim mouse_over_haut%(mouse_over_maxobj%) dim mouse_over_largeur%(mouse_over_maxobj%) dim mouse_over_hauteur%(mouse_over_maxobj%) dim mouse_over_colorer%(mouse_over_maxobj%) dim mouse_over_RGB%(mouse_over_maxobj%,3) timer mouse_over_ntimer% : timer_interval mouse_over_ntimer%,100 on_timer mouse_over_ntimer%,mouse_over_scruter end_if end_sub
' ===== supprimer le système mouse_over sub delete_mouse_over() if variable("mouse_over_nobj%")=1 timer_off mouse_over_ntimer% delete mouse_over_ntimer% free mouse_over_maxobj% free mouse_over_ntimer% free mouse_over_type% free mouse_over_nobj% free mouse_over_k% free mouse_over_ki% free mouse_over_kold% free mouse_over_kiold% free mouse_over_i% free mouse_over_n% free mouse_over_x% free mouse_over_y% free mouse_over_objets% free mouse_over_gauche% free mouse_over_haut% free mouse_over_large% free mouse_over_hauteur% free mouse_over_colorer% free mouse_over_RGB% end_if end_sub
' ===== ajouter un objet à surveiller au système mouse_over ' obj% ==> numéro de l'objet ' parent% ==> numéro de l'objet parent de obj% ' R%, G%, B% ==> couleurs RGB pour changement de couleur de fond ' R%=G%=B%=0 ==> pas de changement de couleur sub add_mouse_over(obj%,parent%,R%,G%,B%) if mouse_over_nobj%<mouse_over_maxobj% mouse_over_nobj% = mouse_over_nobj% + 1 mouse_over_objets%(mouse_over_nobj%) = obj% if parent%=0 mouse_over_gauche%(mouse_over_nobj%) = left(obj%) mouse_over_haut%(mouse_over_nobj%) = top(obj%) else mouse_over_gauche%(mouse_over_nobj%) = left(obj%)+left(parent%) mouse_over_haut%(mouse_over_nobj%) = top(obj%)+top(parent%) end_if mouse_over_largeur%(mouse_over_nobj%) = width(obj%) mouse_over_hauteur%(mouse_over_nobj%) = height(obj%) if (R%=0) and (G%=0) and (B%=0) mouse_over_colorer%(mouse_over_nobj%) = 0 else mouse_over_colorer%(mouse_over_nobj%) = 1 mouse_over_RGB%(mouse_over_nobj%,1) = R% mouse_over_RGB%(mouse_over_nobj%,2) = G% mouse_over_RGB%(mouse_over_nobj%,3) = B% end_if end_if end_sub
' ===== changer le type de surveillance ' typ% ==> type de surveillance 0=changement d'objet 1=continuel sub mouse_over_type(typ%) mouse_over_type% = typ% end_sub
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Mar 2013 - 0:36 | |
| YOUPI !!!!!Un début de solution, pour les prémisses d'une sub... - Code:
-
' constantes Dim Dos$ : Dos$="C:\Users\Yannick\Desktop\Panoramic Essais\Essais O_Toll_Bar()\Icones\"
dim M_TB_deb%,M_TB_fin% ' variables liées à la fonction verif_souris Dim i0%,res%,Ts%,Ls%,hnd%,bout%,cg%,cd%,j0% hnd%=handle(0) ' etiquettes d'évènements Label Clic,Verif_souris,close
Dll_on "KGF.dll"
O_Form(0,0,1,0,0,400,(25*20)+16,"") O_Tool_Bar(1,0,1) O_Insert_Button_TB(10,Dos$+"PasteFromClipboard")
timer M_TB_fin%+1 :timer_interval M_TB_fin%+1,500 :on_Timer M_TB_fin%+1,Verif_souris
on_close 0,close
end
Sub O_Tool_Bar(No%,P%,V%) Dim_local i%,img$,L%,x% img$=Dos$+"Icone_vierge.bmp" L%=-25 M_TB_deb%=No% M_TB_fin%=(width(P%)-16)/25 Dim Tab$(M_TB_fin%,2) for i%=M_TB_deb% to M_TB_fin% L%=L%+25 Tab$(i%,1)=img$ Tab$(i%,2)=img$ O_scene2d(i%,0,1,0,L%,25,25):file_load i%,Tab$(i%,1):inactive i% :cursor_point i% next i% End_Sub
Sub O_Insert_Button_TB(P%,Type$) dim_local x% active P% Tab$(P%,1)=Type$+".bmp" Tab$(P%,2)=Type$+"_Select.bmp" file_load P%,Tab$(P%,1) on_click P%,Clic End_Sub
Clic: message "Ok!" return
Verif_souris: timer_on M_TB_fin%+1 cg%=-26 : cd%=0 res%=dll_call3("GetMousePosition",hnd%,adr(Ls%),adr(Ts%)) if Ts%<25 for i0%=1 to M_TB_fin% cg%=cg%+25 :cd%=cd%+25 if Ls%>cg% and Ls%<cd% bout%=i0% for j0%=1 to M_TB_fin% :file_load j0%,Tab$(J0%,1):next j0% file_load bout%, Tab$(bout%,2) end_if next i0% else for j0%=1 to M_TB_fin% :file_load j0%,Tab$(J0%,1):next j0% end_if return
Close: Timer_off (M_TB_fin%+1) Dll_off return
#include "Objet_Lib.bas" le lien vers mon dossier de travail :Panoramic Essais.zip | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Mar 2013 - 0:42 | |
| On s'est croisé Klaus, il n' y a pas de quoi être désolé, je me posais juste la question : "Quel épisode ai je raté...?" Dans le code que j'ai pondu en premier, j'avais bêtement oublié le "Timer_on N" A vouloir aller plus vite que la musique...on en perd de la vigilance... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Mar 2013 - 1:00 | |
| On a un souci en panoramique avec "Mouse_X_Position(N)" et "Mouse_Y_Position(N)" quand même.
Prenons le cas où on applique ces commandes au form 0. Tant que le form est vide il n' y a pas de souci. Maintenant, si on ajoute un objet, la commande cesse de fonctionner. Comme si le form 0 n'existait plus. C'est pour cela que je me sers de KGF.dll qui elle continu a fonctionné même si la souris rencontre un autre objet. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: bouton roll-over Jeu 28 Mar 2013 - 1:19 | |
| C'est que tu as une mauvaise idée du fonctionnement de mouse_x_position(n) et consort.
Cette fonction te conne la coordonnée x si (et uniquement si) le curseur de souris se trouve dans l'objet n. Cela veut dire que l'objet n doit être celui immédiatement sous le curseur de souris. Si un autre objet est intercalé, comme c'est le cas d'un edit par exemple qui est pose "sur" la form 0, alors, tant que le curseur de souris se trouve à l'intérieur du edit, la fonction mouse_x_position ne peut donner autre chose que la position du curseur de souris à l'intérieur du edit. Le curseur de souris n'est plus considéré être dans la form 0 - il est "capté" par l'edit.
C'est entre autres à cela que servent mes fonctions; être indépendant de l'objet Panoramic. Avec mes fonctions, même en positionnement relatif, du peux passer le handle de la form 0, même si le curseur se trouve dans un edit qui lui-même peut être placé dans un container qui de son côté est placé sur la form 0. En fait, ma fonction qui retourne la position relative, demande à windows la position absolue du curseur ainsi que la position absolue de l'objet dont on passe le handle. Et à partir de cela, par différence, je calcule la position relative que je retourne. Ce fonctionnement diffère totalement de ce qu fait la fonction Panoramic mouse_x_position. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Mar 2013 - 1:55 | |
| Je suis d'accord avec ce que tu dis mais du moment ou on passe le numéro d'objet en paramètre, on s'attend à ce que la commande concerne l'objet demandé et pas un autre. A la limite si je voulais les coordonnées de la souris sur l'objet traversé, je m'attendrai à un nom de commande du style : Mouse_X_Position_Cross. Je ne conteste pas ce que fait la commande mais son appellation car si un jour Jack veut nous faire une commande qui remplace ta dll comment pourra t il la dénommer ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Mar 2013 - 2:58 | |
| J'ai rajouté quelques icônes, changé une ou deux bricoles... le lien : Panoramic Essais.zip( je mettrai sur le webdav demain, enfin tout à l'heure... ) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: bouton roll-over Jeu 28 Mar 2013 - 11:20 | |
| Salut tout le monde. Comme je n’ai pas saisi encore de quoi vous parlez et voulant intervenir : Il me semble que Ygeronimi a un souci avec mouse_x_position(n) et Klaus sait pourquoi cette fonction dé conne. La preuve : - Klaus a écrit:
- Cette fonction te conne la coordonnée x si (et uniquement si) le curseur de souris se trouve dans l'objet n.
. Voila bien une belle fonction qui conne ! Maintenant c’est moi qui déconne , pardon Klaus ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: bouton roll-over Jeu 28 Mar 2013 - 13:06 | |
| Ah ! Ce lapsus est tellement joli que je ne le corrigerai pas ! Il y en a qui lisent attentivement- Merci ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Mar 2013 - 14:50 | |
| Je ne connaissais pas cette fonction de la commande... Avez vous pu voir un petit peu ce que cela donnait comme rendu ? Qu' en pensez vous ? Panoramic Essais .zip | |
| | | JP06
Nombre de messages : 20 Age : 74 Date d'inscription : 01/01/2012
| Sujet: bouton roll-over Jeu 28 Mar 2013 - 16:21 | |
| Bonjour, J'ai essayé le contenu du ZIP en lien dans le message, l'effet obtenu est excellent, c'est bluffant ! Un petit inconvénient peut-être dû au fait que c'est un premier jet, a la fermeture de le fenêtre, Panoramic envoi un message d'erreur, si au préalable on a cliqué sur un des boutons : Panoramic a cessé de fonctionner etc...
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Mar 2013 - 16:56 | |
| @ JP 06 et aux autres,
Rajoutez :
Timer off ..... (avant le message) Timer_on ..... (après le message )
Pause 1000 (à la fin de "Close :" juste avant le return )
__________________________
1 / lors du message le timer tournait encore alors que le form 0 n' était plus actif 2 / je pense que certaines taches lancées par le dernier on_ timer n' avait pas eu le temps de se finir avant la fermeture du form
Corrigez moi si je dis une bêtise... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: bouton roll-over Jeu 28 Mar 2013 - 17:02 | |
| En fait si tu n'arrètes pas le timer, il y a empilement de l'évenement. Si par exemple tu a un message qui affiche voulez-vous quitter oui ou non, l'instruction d'après n'est pas executée si un timer court est actif car quand tu valides la réponse, l'événement timer se redéclenche et il te repose la question. Si tu quitte comme le timer est toujours actif, tu as un vilain message d'erreur qui apparait au bout de quelques secondes après la fermeture de ton programme. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: bouton roll-over Jeu 28 Mar 2013 - 18:22 | |
| Ygeronimi passe à l'échelon supérieur ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Mar 2013 - 18:25 | |
| Ok ! , j'étais pas très loin mais pas encore arrivé... Bref, ceci dit, le fait d'arrêter le timer avant et de le reprendre après le message ne gêne pas le programme et résolve le problème d'un message d'erreur. Le "pause" laisse le programme finir les encours avant de l'arrêter ce qui en évite sûrement un autre... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: bouton roll-over Jeu 28 Mar 2013 - 19:14 | |
| Au lieu d'utiliser un timer, pourquoi n'utilises-tu pas la possibilité de détecter l'entrée du curseur dans un objet ainsi que sa sortie ? Quelque soit le moment ? Tu n'as alors plus de problème de timer, et tu peux gérer chaque objet séparément, sans avoir à faire une boucle pour déterminer l'objet concerné par rapport qux coordonnées du curseur. Tu as directement l'objet et la nature de l'évènement. Regarde les deux sources que j'ai postées plus haut: - test_mouse_over.bas (programme de démo) - mouse_over_SUB.bas (des SUB spéciales pour ce cas) ainsi que bien sûr KGF_SUB.bas. Il te suffit de déplacer le curseur sur les objets présents pour les voir reagir. Il y a même un objet qui "interdit" de sortir le curseur de l'objet vers la droite - il reste captif dans l'objet ! Certains objets changent de couleur etc. Et des informations sur les évènements sont affichées à l'écran. Ce sont des modules que j'avais publiés il y a un moment, et je les ai remis ici pour que ce soit dans le contexte.
L'avantage de procéder ainsi, est double: - on évite la gestion souvent délicate des timers, libérant ainsi de la performance et de la réactivité du programme pour autre chose - on réagit finement et sélectivement sur l'entrée dans un objet et pour la sortie d'un objet | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Mar 2013 - 19:23 | |
| @ Klaus, Je pensais avoir du temps pour étudier ton code mais voilà, Depuis hier, tous me presse de demande, femme, enfants, belle famille... Bref, ils me tombent tous sur le râble et je n' arrive pas à me poser plus de 10 minutes consécutives devant mon écran . Je vais voir çà ce soir, ils vont bien finir par ce calmer... Edit : Je crois qu' il y avait une histoire de handle sur un Picture aussi, j' écris çà de tête, il faut que je vérifie... | |
| | | Contenu sponsorisé
| Sujet: Re: bouton roll-over | |
| |
| | | | bouton roll-over | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |