Page 1 sur 1

Macro pourri ou bien est ce un bug ?

Publié : mer. 28/sept./2011 8:13
par falsam

Code : Tout sélectionner

Macro GadgetHoverCheck(x, y, Gadget)
  (((Not x<GadgetX(Gadget)) & (Not y<GadgetY(Gadget))) & (Not x>=(GadgetX(Gadget)+GadgetWidth(Gadget))) & (Not y>=(GadgetY(Gadget)+GadgetHeight(gadget))))
EndMacro
Cette macro me permettait de détecter si un gadget était survolé.
Elle fonctionne très bien avec la version 4.51 mais provoque une erreur de compilation avec la version 4.60 RC1.

Était elle pourri à la base ? ou bien est ce un bug ?

Bien entendu je peux faire autrement :)

Re: Macro pourri ou bien est ce un bug ?

Publié : mer. 28/sept./2011 17:14
par Guimauve
Et bien moi sous Linux Mint 11 x64 avec PB 4.60 RC 1 elle fonctionne cette macro

Code : Tout sélectionner

Macro GadgetHoverCheck(x, y, Gadget)
  (((Not x<GadgetX(Gadget)) & (Not y<GadgetY(Gadget))) & (Not x>=(GadgetX(Gadget)+GadgetWidth(Gadget))) & (Not y>=(GadgetY(Gadget)+GadgetHeight(gadget))))
EndMacro

If OpenWindow(0, 0, 0, 200, 200, "Rectangles", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  If CreateImage(0, 200, 200) And StartDrawing(ImageOutput(0))
    y = 0
    For x = 0 To 95 Step 10
      Box(x, y, 200-2*x, 200-2*y, RGB(Random(255), Random(255), Random(255)))
      y + 10        ; C'est équivalent à 'y = y + 10'
    Next x
    StopDrawing() 
    ImageGadget(0, 0, 0, 200, 200, ImageID(0))
  EndIf
  
  Repeat
    
    Event = WaitWindowEvent()
    
    If GadgetHoverCheck(WindowMouseX(0), WindowMouseY(0), 0)
      Debug "On survol le gadget"
    Else
      Debug "On survol pas le gadget"
    EndIf
    
    Select Event
      Case 0
        
   
    EndSelect
    
    
  Until Event = #PB_Event_CloseWindow
EndIf
Debugger output a écrit :On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol le gadget
On survol le gadget
On survol le gadget
On survol le gadget
On survol le gadget
On survol pas le gadget
On survol pas le gadget
On survol le gadget
On survol le gadget
On survol le gadget
On survol le gadget
On survol le gadget
On survol le gadget
On survol le gadget
On survol le gadget
On survol le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
On survol pas le gadget
Tu es certain que le problème ne vient pas d’ailleurs ?

A+
Guimauve

Re: Macro pourri ou bien est ce un bug ?

Publié : mer. 28/sept./2011 20:11
par GallyHC
Bonjour,

Déjà cette macro fonctionne très bien avec le code de Guimauve sur la version 4.60 RC1. Et en plus un grand merci le code est la solution a une chose que je devais faire et maintenant c'est chose faite :).

Merci alors pour cela.

Cordialement,
GallyHC

Re: Macro pourri ou bien est ce un bug ?

Publié : mer. 28/sept./2011 20:29
par falsam
Content de t'avoir aider avec cette macro :)

Mes programmes qui utilisent cette macro fonctionnaient bien avec la version 4.51 mais pas avec la vers 4.60 RC1

J'utilisais cette macro dans Tiny Visual Designer accessible sur ce lien.


La compilation de ce la macro seule me provoque une erreur de compilation.

L'exemple de Guimauve plante aussi sous Window 7. mais pas sous Linux Ubuntu.

Tu as testé sous quel OS ?

Re: Macro pourri ou bien est ce un bug ?

Publié : mer. 28/sept./2011 21:01
par GallyHC
J'ai testé sur XP et seven sans aucun problème. je l'utilise pour mon programme "Tomtomax MaxiBox V3" et franchement c'est exactement ce que je voulais :).

Re: Macro pourri ou bien est ce un bug ?

Publié : mer. 28/sept./2011 21:33
par falsam
Merci de votre Aide. j'ai installé à nouveau la version 4.60 RC1 et cette macro fonctionne de nouveau normalement. Sujet résolu et content que cette macro te plaise GallyHC.

Re: [RESOLU] Macro pourri ou bien est ce un bug ?

Publié : mer. 28/sept./2011 22:56
par GeBonet
:wink: Bonsoir,
C'est vraiment une bonne macro que j'utilisais depuis pas mal de temps...
Maintenant XP et 7 avec PB 4.6RC1
Pêchée je ne sais plus ou ? Peut être ici :roll: Bref ci après la même de guimauve mais peut-être
plus parlante et non graphique !!!

Code : Tout sélectionner

Enumeration
  #Windows1
  #Bar
  #Gadget1 
  #Gadget2
EndEnumeration
;
Macro GadgetHoverCheck(x, y, Gadget)
	(((Not x<GadgetX(Gadget)) & (Not y<GadgetY(Gadget))) & (Not x>=(GadgetX(Gadget)+GadgetWidth(Gadget))) & (Not y>=(GadgetY(Gadget)+GadgetHeight(gadget))))
EndMacro
;
If OpenWindow(#Windows1, 0, 0, 200, 200, "Rectangles", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CreateStatusBar(#Bar,WindowID(#Windows1))
    AddStatusBarField(60)
    AddStatusBarField(60)
    AddStatusBarField(80)
    
    ButtonGadget(#Gadget1,20,20,100,30," Le bouton ")
    
    ButtonGadget(#Gadget2,20,80,100,30,"Autre bouton")

	Repeat
		
        Event = WaitWindowEvent()
		xp=WindowMouseX(0):yp=WindowMouseY(0)
		
		StatusBarText(#Bar,0,"X= "+Str(xp),#PB_StatusBar_Raised)
        StatusBarText(#Bar,1,"Y= "+Str(yp),#PB_StatusBar_Raised)
      
		If GadgetHoverCheck(xp,yp , #Gadget1) Or GadgetHoverCheck(xp,yp , #Gadget2)
		  Debug "On survol un gadget"
		  StatusBarText(#Bar,2,"IN Gadegt",#PB_StatusBar_Raised)
		Else  
		  StatusBarText(#Bar,2,"OUT Gadegt",#PB_StatusBar_Raised)
		EndIf
		
		Select Event
			Case 0
		
		EndSelect
		
	Until Event = #PB_Event_CloseWindow
EndIf
Bonne nuit ! :)

Re: [RESOLU] Macro pourri ou bien est ce un bug ?

Publié : jeu. 29/sept./2011 8:09
par Backup
GeBonet a écrit ::wink: Bonsoir,
C'est vraiment une bonne macro que j'utilisais depuis pas mal de temps...
Maintenant XP et 7 avec PB 4.6RC1
Pêchée je ne sais plus ou ? Peut être ici :roll: Bref ci après la même de guimauve mais peut-être
plus parlante et non graphique !!!
ben oui mais si c'est pour Copier Guimauve , je vois pas l’intérêt d'ajouter un post :roll:

chez pas moi ; t'aurai pu avoir un peu d'imagination et faire un truc nouveau
meme si je ne l'ai pas testé sous 4.6 ,et qu'il est specifique Windows, cela apporte au moins une nouveauté ...

c'est le problème des dinosaures, les neurones défaillent , ils finissent par manquer d'originalité

un code comme ça par exemple (qui apporte une nouveauté, un nouvel angle , une autre solution ) :

Code : Tout sélectionner

Declare over_by_dobro(x,Y)
Global caption$ = Space(100)
Enumeration
      #wind
      #Button_Load
EndEnumeration


If OpenWindow(#wind, 0, 0, 200, 200, "Rectangles", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
      If ButtonGadget(#Button_Load, 0, 6, 80, 30, "test")
      EndIf
      
      Repeat
            x=DesktopMouseX():Y=DesktopMouseY() 
            Event = WaitWindowEvent()
            id= over_by_dobro(x,Y)
            If   id=4
                  Debug "dessus"
            Else
                  Debug "pas dessus"
            EndIf 
            Select Event
                        
            EndSelect
            
            
      Until Event = #PB_Event_CloseWindow
EndIf 

Procedure over_by_dobro(x,Y)
      ; by Dobro
      hW = WindowFromPoint_(x|Y<<32)
      id= GetWindowText_(hW, @caption$, 99)
   ProcedureReturn id 
EndProcedure


je trouve que par apport a la belle époque du Forum (les anciens comprendront)
les "récents" membres , manquent de créativités (ils se reconnaitront :lol: )

si c'est pour singer un code qui viens d'etre posté , mieux vaut faire une petite sieste hein :mrgreen:

Re: Macro pourri ou bien est ce un bug ?

Publié : jeu. 29/sept./2011 8:20
par falsam
Bonjour Dobro. +1 avec toi.
J'ai enlevé Résolu car je sens que la discussion va continuer ici :)

Re: Macro pourri ou bien est ce un bug ?

Publié : ven. 30/sept./2011 13:30
par dayvid
Bonjour !

IsMouseOverGadget()

Marche pas ça ???

Je veux dire, est-il équivalent
Comment tu fais si ya une image sur une image ou un gadget quelconque sur une image ou un autre gadget ?
Ceci détecte t-il bien le gadget au premier plant, et pour ceux en arrière plant ?a

Re: Macro pourri ou bien est ce un bug ?

Publié : ven. 30/sept./2011 13:45
par falsam
IsMouseOverGadget() je ne connais pas

Cette macro détecte la totalité des gadgets à partir du moment ou tu identifies chaque gadget dans une structures par exemple.
De plus c'est une solution multiplatform.

Re: Macro pourri ou bien est ce un bug ?

Publié : ven. 30/sept./2011 13:51
par dayvid
Ba en faite sa teste si le curseur est sur un gadget
je ne sais plus qui me la faite :?: mais je m'en sert fréquemment !