FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Une calculatrice en une ligne de programme
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar jean_debord Aujourd'hui à 8:01

» Gestion d'un système client-serveur.
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar Pedro Hier à 19:31

» Les maths du crocodile
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar jean_debord Hier à 10:37

» Naissance de Crocodile Basic
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar jean_debord Hier à 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar papydall Dim 21 Avr 2024 - 23:30

» Form
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar leclode Dim 21 Avr 2024 - 18:09

» trop de fichiers en cours
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar Marc Dim 21 Avr 2024 - 2:41

» 2D_fill_color(résolu)
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

» Bataille-navale
Bug dans la fonction MOUSE_LEFT_DOWN() Emptypar jjn4 Mer 3 Avr 2024 - 14:08

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
Le Deal du moment :
Jeux, jouets et Lego : le deuxième à ...
Voir le deal

 

 Bug dans la fonction MOUSE_LEFT_DOWN()

Aller en bas 
4 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12274
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Bug dans la fonction MOUSE_LEFT_DOWN() Empty
MessageSujet: Bug dans la fonction MOUSE_LEFT_DOWN()   Bug dans la fonction MOUSE_LEFT_DOWN() EmptyDim 27 Sep 2015 - 19:22

La fonction MOUSE_LEFT_DOWN est supposée retourner 1 si le bouton gauche est enfoncé, et 0 sinon. Or, elle retourne bien 0 si le bouton n'est pas enfoncé. Mais so l'on enfonce le bouton et on le maintient enfoncé, elle retourne 1 au premier appel, mais ensuite toujours 0 bien que le bouton reste enfoncé !

Dans le programme suivant, il suffit de déplacer la souris dans la form, puis enfoncer le bouton pour constater cela:
Code:
label tick
dim x%, y%, d%
timer 1 : timer_interval 1,100 : on_timer 1,tick
end

tick:
timer_off 1
d% = mouse_left_down(0)
x% = mouse_x_position(0)
y% = mouse_y_position(0)
if d%=1
  caption 0,"Enfoncé: "+str$(x%)+","+str$(y%)
else
  caption 0,"Relâché: "+str$(x%)+","+str$(y%)
end_if
timer_on 1
return
Ce n'est pas normal. Je me souviens avoir utilisé cela dans certains programmes, et ça marchait. J'ai la version actuelle de Panoramic (V0.9.26), et je suis sous W10.

En relâchant le bouton et appuyant à nouveau, l'état enfoncé est à nouveau reconnu une seule fois, puis la fonction retourne à nouveau 0. C'est un bug évident.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Bug dans la fonction MOUSE_LEFT_DOWN() Empty
MessageSujet: Re: Bug dans la fonction MOUSE_LEFT_DOWN()   Bug dans la fonction MOUSE_LEFT_DOWN() EmptyDim 27 Sep 2015 - 19:40

J'ai tenté de reproduire ton problème et j'ai le même résultat sous win7.32 avec la dernière version de panoramic.

Regardes par contre avec un exemple proche du tien :

Code:
label tick
dim x%, y%, d%
BUTTON 1 : on_click 1,tick
end

tick:
d% = mouse_left_down(0)
x% = mouse_x_position(0)
y% = mouse_y_position(0)
if d%=1
  caption 0,"Enfoncé: "+str$(x%)+","+str$(y%)
else
  caption 0,"Relâché: "+str$(x%)+","+str$(y%)
end_if
return

Tu cliques sur le bouton il est détecté puis tu cliques dans le form et tu recommence sur le bouton, il est de nouveau détecté ! scratch scratch
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


Nombre de messages : 12274
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Bug dans la fonction MOUSE_LEFT_DOWN() Empty
MessageSujet: Re: Bug dans la fonction MOUSE_LEFT_DOWN()   Bug dans la fonction MOUSE_LEFT_DOWN() EmptyDim 27 Sep 2015 - 19:47

Oui, c'est une autre façon de mettre le même bug en évidence. La détection par mouse_left_down ne marche qu'une fois, comme un fusil à 1 coup: il faut "recharger" en relâchant, puis recliquant. Donc, BUG !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Bug dans la fonction MOUSE_LEFT_DOWN() Empty
MessageSujet: Re: Bug dans la fonction MOUSE_LEFT_DOWN()   Bug dans la fonction MOUSE_LEFT_DOWN() EmptyDim 27 Sep 2015 - 21:00

Je ne sais pas si c'est vraiment un bug, ça y ressemble... mais on peut y pallier.
Personnellement je teste
MOUSE_LEFT_DOWN(n) = 1 pour la détection de l'appui, et ensuite
MOUSE_LEFT_UP(n) = 1 pour la détection du relâchement du bouton
Code:
Picture 1: Full_Space 1: Print_Target_is 1: Font_Size 1,12: Font_Bold 1

While Mouse_Left_Down(1) = 0: Print_Locate 0,0: Print "Relâché": Pause 50: End_While
While Mouse_Left_Up(1) = 0
    Print_Locate 0,0: Print "Enfoncé": Pause 50
End_While
Print_Locate 0,0: Print "Relâché"
End

PS Je m'aperçois que ce n'est peut-être pas aussi simple que ça en a l'air... je regarde de plus près.

Comme ça c'est mieux (clic dans le picture pour dessiner des figures à main levée, puis relâcher, clic le carré rouge en haut à droite pour sortir):
Code:
PICTURE 1: FULL_SPACE 1
Dessin(1): Message "Terminé !"
TERMINATE

SUB Dessin(p%)
' dessin à main levée dans le picture p%
DIM_LOCAL xd,yd,x,y
CAPTION 0,"Cliquer pour dessiner"
2D_TARGET_IS p%: 2D_PEN_WIDTH 3: 2D_FILL_COLOR 255,0,0
2D_RECTANGLE WIDTH(p%)-15,0,WIDTH(p%),15
WHILE 2 > 1
    WHILE MOUSE_LEFT_DOWN(p%) = 0: PAUSE 100: END_WHILE
    xd = MOUSE_X_POSITION(p%): yd = MOUSE_Y_POSITION(p%): ' point de départ du dessin
    IF xd>(WIDTH(p%)-15) AND yd<15 THEN EXIT_WHILE
    WHILE MOUSE_LEFT_UP(p%) = 0
        x = MOUSE_X_POSITION(p%): y = MOUSE_Y_POSITION(p%)
        CAPTION 0, "x="+STR$(x)+" y="+STR$(y)
        2D_LINE xd,yd,x,y: xd = x: yd = y: PAUSE 100
    END_WHILE
END_WHILE
END_SUB
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12274
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Bug dans la fonction MOUSE_LEFT_DOWN() Empty
MessageSujet: Re: Bug dans la fonction MOUSE_LEFT_DOWN()   Bug dans la fonction MOUSE_LEFT_DOWN() EmptyDim 27 Sep 2015 - 22:43

Merci, Jl35 ! Ceci met également ce bug en évidence, et également dans la fonction MOUSE_LEFT_UP... Mais ton astuce est LE moyen de contourner ce problème. Je l'ai adaptée à mon petit code de déplacement d'objets, qui marche bien ainsi.

Ceci dit, c'est bien un bug, et ces fonctions ne marchent pas comme décrites dans la doc. Elles ne peuvent pas servir pour détecter si le bouton est enfoncé ou non, à un unstant t donné. Cela ne marche qu'une fois. Jack, si tu lis ça...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Bug dans la fonction MOUSE_LEFT_DOWN() Empty
MessageSujet: Re: Bug dans la fonction MOUSE_LEFT_DOWN()   Bug dans la fonction MOUSE_LEFT_DOWN() EmptyDim 27 Sep 2015 - 23:24

Tu as raison Klaus, évidemment. Même si on peut contourner l'obstacle, c'en est bien un.
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

Bug dans la fonction MOUSE_LEFT_DOWN() Empty
MessageSujet: Re: Bug dans la fonction MOUSE_LEFT_DOWN()   Bug dans la fonction MOUSE_LEFT_DOWN() EmptyLun 28 Sep 2015 - 17:31

Bonjour à tous,

J'ai déjà été confronté à ça, mais pas sûr que ce soit un bug; dans l'aide:
Citation :
la fonction MOUSE_LEFT_DOWN(N) est utilisée pour savoir si le bouton gauche de la souris a été enfoncé sur un objet système...
C'est écrit 'a été', donc l'état passe à 1 quand on l'enfonce, puis à 0 la frame suivante. Sinon ça aurait été écrit 'est'.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12274
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Bug dans la fonction MOUSE_LEFT_DOWN() Empty
MessageSujet: Re: Bug dans la fonction MOUSE_LEFT_DOWN()   Bug dans la fonction MOUSE_LEFT_DOWN() EmptyLun 28 Sep 2015 - 17:40

???
Bug dans la fonction MOUSE_LEFT_DOWN() Aa121
pas "a été", mais "est" !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
silverman

silverman


Nombre de messages : 968
Age : 51
Localisation : Picardie
Date d'inscription : 18/03/2015

Bug dans la fonction MOUSE_LEFT_DOWN() Empty
MessageSujet: Re: Bug dans la fonction MOUSE_LEFT_DOWN()   Bug dans la fonction MOUSE_LEFT_DOWN() EmptyLun 28 Sep 2015 - 18:02

Alors on a tous les 2 raison, regarde un peu plus bas, dans la rubrique 'UTILISATION'.(Du coup, bug ou pas?)
Sinon, il y a Nardo26 qui a fait une dll pour détecter si un bouton de la souris est enfoncé(il me semble), ou il y a aussi la fonction 'GetAsyncKeyState' de user32 qui fait ça aussi.(Et scancode, mais moins pratique à mon avis)
Revenir en haut Aller en bas
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Bug dans la fonction MOUSE_LEFT_DOWN() Empty
MessageSujet: Re: Bug dans la fonction MOUSE_LEFT_DOWN()   Bug dans la fonction MOUSE_LEFT_DOWN() EmptyLun 28 Sep 2015 - 18:15

Pour Scancode il faut réinitialiser la fonction après chaque lecture (Scancode=0), c'est sans doute ce qui serait nécessaire pour Mouse_Left_Down, mais ce n'est pas prévu.

Et finalement, c'est peut-être l'utilisation de Scancode (je ne me souvenais plus que ça marchait pour la souris, merci Minibug silverman) qui serait le plus pratique pour ça:
Code:
LABEL tt
DIM s
EDIT 1: WIDTH 1,100: font_bold 1: on_close 0,tt

WHILE 2 > 1
    TEXT 1,""
    s = SCANCODE: SCANCODE = 0
    SELECT s
        CASE 1: TEXT 1,"Bouton gauche"
        CASE 2: TEXT 1,"Bouton droit"
    END_SELECT
    PAUSE 100
END_WHILE
tt:
terminate
Le seul souci c'est qu'il réagit sur tout l'écran, alors il faut s'assurer qu'on est bien sur le bon objet.


Dernière édition par JL35 le Lun 28 Sep 2015 - 19:52, édité 2 fois
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12274
Age : 74
Localisation : Ile de France
Date d'inscription : 29/12/2009

Bug dans la fonction MOUSE_LEFT_DOWN() Empty
MessageSujet: Re: Bug dans la fonction MOUSE_LEFT_DOWN()   Bug dans la fonction MOUSE_LEFT_DOWN() EmptyLun 28 Sep 2015 - 19:47

Un petit programme tout simple pour visualiser l'état des boutons de la souris. Et on voit que pour Panoramic, les boutons ne restent pas enfoncés, même si physiquement c'est le cas.
Code:



label tick

2d_rectangle 100,10,300,400
2d_line 100,180,300,180
2d_line 200,10,200,180
2d_flood 150,100,255,255,255
2d_flood 250,100,255,255,255

timer 1 : timer_interval 1,100 : on_timer 1,tick

end

tick:
  timer_off 1
  if mouse_left_down(0)=1
    2d_flood 150,100,255,0,0
  else
    2d_flood 150,100,255,255,255
  end_if
  if mouse_right_down(0)=1
    2d_flood 250,100,255,0,0
  else
    2d_flood 250,100,255,255,255
  end_if
  timer_on 1
  return
J'aimerais que ce comportement soit corrigé. Il est facile de savoir s'il y a eu un clic droit ou gauche, par les évènements on_click. Mais ce que je veux savoir, à n'importe quel moment, c'est l'état enfoncé ou non des boutons, indépendemment de tout clic. C'est ce que le nom de la fonction ainsi que l'entête de l'aide laisse entendre.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Bug dans la fonction MOUSE_LEFT_DOWN() Empty
MessageSujet: Re: Bug dans la fonction MOUSE_LEFT_DOWN()   Bug dans la fonction MOUSE_LEFT_DOWN() Empty

Revenir en haut Aller en bas
 
Bug dans la fonction MOUSE_LEFT_DOWN()
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Un bug dans FILEBIN_HEXA_WRITE ?
» C'est pas dans l'axe...
» Crash dans IDE
» Prévisualisation dans PRINT.DLL
» Correction dans la doc de kgf.dll.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Un problème avec PANORAMIC?-
Sauter vers: