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
» Logiciel de planétarium.
Bouton-poussoir à double action Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Bouton-poussoir à double action Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Bouton-poussoir à double action Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Bouton-poussoir à double action Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Bouton-poussoir à double action Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Bouton-poussoir à double action Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Bouton-poussoir à double action Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Bouton-poussoir à double action Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Bouton-poussoir à double action Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Bouton-poussoir à double action Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Bouton-poussoir à double action Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Bouton-poussoir à double action Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Bouton-poussoir à double action Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Bouton-poussoir à double action Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Bouton-poussoir à double action Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
Smartphone Xiaomi 14 – 512 Go- 6,36″ 5G ...
Voir le deal
599 €

 

 Bouton-poussoir à double action

Aller en bas 
2 participants
AuteurMessage
Marc

Marc


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

Bouton-poussoir à double action Empty
MessageSujet: Bouton-poussoir à double action   Bouton-poussoir à double action EmptyVen 13 Mai 2022 - 1:31

Bonjour à tous !

Ce bouton-poussoir possède trois "états" :
- Repos, correspond à aucun appui ;
- Un appui bref qui déclenche une action ;
- Un appui prolongé qui déclenche une autre action ;

Afin de réaliser un exemple concret du fonctionnement, j’ai créé un code-source très simplifié (et donc un peu austère).
Le bouton sera représenté par un simple carré blanc (un PICTURE). Le contrôle du fonctionnement se fera sur un track_bar.
Le bouton permettra soit de mémoriser la position du track_bar, soit de rappeler cette position mémorisée.

Bouton-poussoir à double action Bouton12


Le fonctionnement :
- Placer le curseur du track_bar dans une position quelconque.
- Sur le carré blanc, cliquez  et maintenez appuyé le bouton gauche de la souris jusqu’à ce que le bouton émette un flash rouge. A ce moment la position du track_bar est mémorisée.

Vous pouvez changer la position du curseur, un simple clic gauche bref sur le carré blanc remettra le curseur sur la position qui a été mémorisée précédemment. Le bouton émettra un flash vert.


Code:
' Bouton-poussoir 3 états
' Marc - Mai 2022
' Ecrit en langage Panoramic

dim memoire%
label actionbouton

' creerBouton(numéro d'objet, coordonnée en x, coordonnée en y)
creerBouton(10,50,50)

' créer un track_bar pour vérifier le bon fonctionnement du programme
' creerTrackBar(numéro d'objet, coordonnée en x, coordonnée en y)
creerTrackBar(2,100,50)

end

sub creerBouton(n%,x%,y%)
    picture 1
    width 1,25
    height 1,25
    top 1,y%
    left 1,x%
    color 1,255,255,255
    on_mouse_down 1,actionBouton
end_sub

actionBouton:
    off_mouse_down 1
    appuiBouton()
    on_mouse_down 1,actionBouton
return

sub appuiBouton()
    dim_local null%, temps%, mr%
    ' inhiber bouton droit souris
    if mouse_right_down(1) = 1
        exit_sub
    end_if
    ' raffraichir de l'état des boutons de la souris
    null% = mouse_left_up(1)
    null% = mouse_left_down(1)

    temps% = number_ticks
    while mouse_left_up(1) = 0 :' Tant que le bouton gauche souris est appuyé            
        if temps% + 2000 < number_ticks
            memoire% = position(2)
            color 1,255,0,0
            pause 250
            color 1,255,255,255
            mr% = 1
            exit_while    
        end_if
    end_while
    if mr% = 0
        position 2,memoire%
        color 1,0,255,0
        pause 250
        color 1,255,255,255
    end_if
end_sub

sub creerTrackBar(n%,x%,y%)
    track_bar n%
    left n%,x%
    top n%,y%
    min n%,0
    max n%,100
end_sub

On rencontre ce principe de fonctionnement sur des anciens autoradios avec des touches de présélection des stations.


EDIT du 13/05/2022
Voici une nouvelle démonstration (un peu plus présentable) du bouton à double action :

Le bouton n'est plus un PICTURE mais un BUTTON_PICTURE.
La mise en mémoire est visualisée par 2 flashs rouges successifs.
J'ai ajouté quelques commentaires dans le code-source.

Bouton-poussoir à double action Bouton13

Code:
' Bouton-poussoir double action
' Démonstration
' Marc - Mai 2022
' Ecrit en langage Panoramic

dim memoire%
label actionbouton

interfaceUtilisateur()

end

sub interfaceUtilisateur()
    height 0,230
    width 0,400
    left 0,(screen_x - width(0))/2
    top 0,(screen_y - height(0))/2
    color 0,80,80,80

    ' Titre et commentaires
    creerTitre()

    ' Creer un bouton
    creerBouton()

    ' créer un track_bar témoin pour tester le fonctionnement du programme
    creerTrackBar()
end_sub

sub creerTitre()
    alpha 1
    top 1,15
    left 1,20
    font_size 1,14
    font_color 1,255,255,255
    caption 1,"Démonstration : Bouton à double action."
    
    alpha 2
    top 2,45
    left 2,30
    font_size 2,10
    font_color 2,255,255,255
    caption 2,"- Appui long : mémorisation de la position du track_bar"
    
    alpha 3
    top 3,65
    left 3,30
    font_size 3,10
    font_color 3,255,255,255
    caption 3,"- Appui court : rappel de la position mise en mémoire"
end_sub

sub creerBouton()
    button_picture 4
    width 4,30
    height 4,30
    top 4,120
    left 4,90
    button_picture_target_is_picture
    width 4,30
    height 4,30
    color 4,240,240,240
    on_mouse_down 4,actionBouton
end_sub

sub creerTrackBar()
    track_bar 5
    left 5,150
    top 5,125
    min 5,0
    max 5,100
end_sub

actionBouton:
    off_mouse_down 4
    appuiBouton()
    on_mouse_down 4,actionBouton
return

sub appuiBouton()
    dim_local null%, temps%, mr%

    ' inhiber l'action du bouton droit souris
    if mouse_right_down(4) = 1
        exit_sub
    end_if

    ' raffraichir l'état des boutons de la souris
    null% = mouse_left_up(4)
    null% = mouse_left_down(4)

    temps% = number_ticks
    while mouse_left_up(4) = 0 :' Tant que le bouton gauche souris n'est pas laché            
        if temps% + 1500 < number_ticks :' temps d'attente en ms pour valider l'appui long
            mr% = 1
            memoire% = position(5)
            color 4,255,0,0
            pause 100 :' délai du premier flash rouge
            color 4,240,240,240
            pause 100 :' delai entre les deux flashs
            color 4,255,0,0
            pause 100 :' délai du 2ème flash rouge
            color 4,240,240,240
            exit_while    
        end_if
    end_while
    if mr% = 0
        position 5,memoire%
        color 4,0,255,0
        pause 250 :' délai du flash vert
        color 4,255,255,255
    end_if
end_sub

Bonne programmation à tous !


Dernière édition par Marc le Ven 13 Mai 2022 - 14:36, édité 2 fois
Revenir en haut Aller en bas
Minibug

Minibug


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

Bouton-poussoir à double action Empty
MessageSujet: Re: Bouton-poussoir à double action   Bouton-poussoir à double action EmptyVen 13 Mai 2022 - 8:00

Bonjour Marc et bonjour à tous,

Un petit code sans prétention certes...
Mais qui montre comment utiliser des clics dans des espaces temps sans TIMER !

Merci pour ce partage. Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Marc

Marc


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

Bouton-poussoir à double action Empty
MessageSujet: Re: Bouton-poussoir à double action   Bouton-poussoir à double action EmptyVen 13 Mai 2022 - 14:33

Bonjour Minibug et bonjour à tous !

Merci Minibug pour ton commentaire.

Dans le premier post, j'ai ajouté une nouvelle démonstration.

Le PICTURE servant de bouton est remplacé par un BUTTON_PICTURE.

La mémorisation est visualisée par un double flash rouge.

J'ai ajouté quelques commentaires dans le code-source.


Bonne journée à tous !
Revenir en haut Aller en bas
Contenu sponsorisé





Bouton-poussoir à double action Empty
MessageSujet: Re: Bouton-poussoir à double action   Bouton-poussoir à double action Empty

Revenir en haut Aller en bas
 
Bouton-poussoir à double action
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Modèle de bouton-poussoir
» Confirmation d'action
» CONTAINER_TAB+ON_MOUSE_XXX : pas d'action
» Domotique et électronique : Arduino, action locale/distante
» Label en double

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: