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
» PANORAMIC V 1
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar jjn4 Aujourd'hui à 17:49

» select intégrés [résolu]
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar jjn4 Aujourd'hui à 17:00

» number_mouse_up
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar jjn4 Aujourd'hui à 11:59

» Aide de PANORAMIC
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar jjn4 Aujourd'hui à 11:16

» trop de fichiers en cours
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar lepetitmarocain Aujourd'hui à 10:43

» Je teste PANORAMIC V 1 beta 1
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar papydall Aujourd'hui à 4:17

» bouton dans autre form que 0
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Les fonctions MOUSE_XXXXX_XXX(N) Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment :
Réassort du coffret Pokémon 151 ...
Voir le deal
anipassion.com

 

 Les fonctions MOUSE_XXXXX_XXX(N)

Aller en bas 
2 participants
AuteurMessage
Marc

Marc


Nombre de messages : 2391
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Les fonctions MOUSE_XXXXX_XXX(N) Empty
MessageSujet: Les fonctions MOUSE_XXXXX_XXX(N)   Les fonctions MOUSE_XXXXX_XXX(N) EmptyVen 2 Fév 2024 - 14:20

Bonjour à tous !

Loin de moi l’idée de faire mon pédant, je souhaite juste partager quelques astuces sur la gestion des fonctions :

- MOUSE_LEFT_DOWN(N)
- MOUSE_LEFT_UP(N)
- MOUSE_RIGHT_DOWN(N)
- MOUSE_RIGHT_UP(N)


« N » étant le numéro d’objet sur lequel on opère l’action.

Elles ont un fonctionnement particulier qui peut rapidement poser problème dans un code si l'on ne connait pas le comportement interne de ces fonctions.

1) Ces fonctions retournent soit un « 0 » soit un « 1 ».

Elles permettent de savoir si un des deux boutons de la souris a été enfoncé ou relâché.


2) Ces fonctions sont immédiatement remises à « 0 » après les avoir interrogées, même si l’action sur le bouton perdure.

Seule une nouvelle action pourra refaire passer à « 1 » le résultat d’une de ces fonctions. C’est le changement d’état enfoncé / relâché du bouton qui fait basculer la valeur d’une fonction de « 0 » à « 1 ».


Exemple séquentiel de fonctionnement avec la fonction MOUSE_LEFT_DOWN(N) :
- Lecture de la valeur de la fonction MOUSE_LEFT_DOWN(N) => 0
- Enfoncer et maintenir enfoncé la touche gauche de la souris
- Lecture de la valeur de la fonction MOUSE_LEFT_DOWN(N) => 1
- Nouvelle lecture (la touche est restée enfoncée) de la valeur de MOUSE_LEFT_DOWN => 0
La valeur restera à « 0 » tant que le bouton de la souris ne sera pas relâché puis ré-enfoncé.

Ce mécanisme est identique pour les 4 fonctions.

Voici une démonstration avec un code à exécuter.
Dans ce code, la fonction utilisée est MOUSE_LEFT_DOWN(N) ; L’objet N servant de test est l’objet BUTTON 1 ; Le résultat s’affiche dans l’EDIT ; Pour sortir du programme, appuyez sur la touche « Echap ».

Code:
' Démonstration de la fonction MOUSE_LEFT_DOWN(N)
' Pour le test, N sera le BUTTON 1
' la lecture de la fonction s'affiche dans l'objet EDIT
' ESC pour sortir du programme
' une lecture toutes les 250 ms

caption 0,"Touche ''Echap'' pour sortir du programme !"
button 1 : top 1,90 : left 1,80 : caption 1,"Zone de test"
edit 2 : top 2,30 : left 2,30 : width 2,200

while scancode <> 27
    text 2,"MOUSE_LEFT_DOWN(1) => " + str$(MOUSE_LEFT_DOWN(1))
    pause 250
end_while

terminate
end

 



Pour aller plus loin…

Dans certains cas, il peut être opportun de réinitialiser ces fonctions avant d’entrer dans une boucle de lecture.

La réinitialisation s’effectue simplement en lisant la valeur des fonctions (Je rappelle qu’elles se remettent à « 0 » dès qu’il y a eu une lecture).

Code d’exemple :
Code:
' déclarer une variable
dim null%

' lecture des 4 fonctions
null% = mouse_left_up(objet%)
null% = mouse_left_down(objet%)
null% = mouse_right_up(objet%)
null% = mouse_right_down(objet%)

' les 4 fonctions sont réinitialisées à "0"

end


scratch  Une question :
Mais comment fait-on pour savoir si le bouton gauche de la souris est resté enfoncé ?

Tout simplement en créant une variable qui mémorisera l’état du bouton de la souris.

Pour le bouton gauche de la souris, il faudra utiliser le couple MOUSE_LEFT_DOWN (N) et MOUSE_LEFT_UP(N) avec deux conditions IF ....... END_IF.

La première condition va vérifier si le bouton gauche de la souris a été enfoncé.

La deuxième condition va vérifier si le bouton gauche de la souris a été relâché.

Exemple :
Code:
' déclarer une variable
dim boutonGaucheEnfonce%

caption 0,"Touche ''Echap'' pour sortir du programme !"
button 1 : top 1,90 : left 1,80 : caption 1,"Zone de test"
edit 2 : top 2,30 : left 2,30 : width 2,200

while scancode <> 27
    if mouse_left_down(1) = 1
        boutonGaucheEnfonce% = 1    
    end_if
    if mouse_left_up(1) = 1
        boutonGaucheEnfonce% = 0
    end_if

    text 2,"boutonGaucheEnfonce% => " + str$(boutonGaucheEnfonce%)

    ' petite pause pourne pas affoler le processeur
    pause 20
end_while

terminate
end



Bonne programmation à tous !


Dernière édition par Marc le Ven 2 Fév 2024 - 19:50, édité 1 fois
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2703
Date d'inscription : 13/09/2009

Les fonctions MOUSE_XXXXX_XXX(N) Empty
MessageSujet: Re: Les fonctions MOUSE_XXXXX_XXX(N)   Les fonctions MOUSE_XXXXX_XXX(N) EmptyVen 2 Fév 2024 - 14:45

Merci pour toutes ces explications fort instructives
sur le fonctionnement interne de ces fonctions.
C'est très intéressant !
Marc a écrit:
Loin de moi l’idée de faire mon pédant
Non, non, n'aie crainte, ça ne risque pas !
Le forum est précisément fait pour ça,
pour que les savoirs de chacun profitent à tout le monde.
Cela fait des tutos supers !
cheers
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2391
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Les fonctions MOUSE_XXXXX_XXX(N) Empty
MessageSujet: Re: Les fonctions MOUSE_XXXXX_XXX(N)   Les fonctions MOUSE_XXXXX_XXX(N) EmptyVen 2 Fév 2024 - 19:52

Merci JJN4 !

J'ai apporté quelques petites modifications mineures au texte.

Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2703
Date d'inscription : 13/09/2009

Les fonctions MOUSE_XXXXX_XXX(N) Empty
MessageSujet: Re: Les fonctions MOUSE_XXXXX_XXX(N)   Les fonctions MOUSE_XXXXX_XXX(N) EmptyLun 5 Fév 2024 - 14:42

Finalement, ta démo m'inspire tellement que je crois que
je vais faire un nouveau type de puzzle s'en inspirant.
Encore merci pour cette superbe façon de programmer !
cheers alien sunny
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
 
Les fonctions MOUSE_XXXXX_XXX(N)
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Présentation et bavardage-
Sauter vers: