FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Mah-Jong européen new-look
par jjn4 Aujourd'hui à 15:48

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par pascal10000 Aujourd'hui à 13:46

» a l'aide klaus
par Minibug Aujourd'hui à 11:42

» KGF_dll - nouvelles versions
par Minibug Aujourd'hui à 1:48

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Aujourd'hui à 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

» anomalie
par Klaus Sam 9 Déc 2017 - 3:21

» hommage
par Jicehel Ven 8 Déc 2017 - 11:29

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 8 Déc 2017 - 10:43

» carte son
par Klaus Ven 8 Déc 2017 - 2:37

» API Windows
par Klaus Jeu 7 Déc 2017 - 21:03

» mise a jour calculatrice
par joeeee2017 Mer 6 Déc 2017 - 22:19

» j'ai un petit problème
par JL35 Mer 6 Déc 2017 - 21:58

» source vumetre avec delphi
par Klaus Mar 5 Déc 2017 - 23:22

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 MARK_ON déclenche un événement ON_CLICK à la place de ...

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: MARK_ON déclenche un événement ON_CLICK à la place de ...   Mer 18 Oct 2017 - 12:01

Description du problème:
MARK_ON déclenche un événement ON_CLICK sur un CHECK à la place de l'utilisateur, si ce ON_CLICK N,LABEL a été déclaré avant l'utilisation de MARK_ON.
C'est la même chose pour MARK_OFF.
Par contre c'est un peu différent pour OPTION: MARK_OFF ne déclenche pas d’événement.

Pour le moment, je me suis positionné dans la rubrique "à l'aide".... Mais je trouve ce fonctionnement curieux.
Il me semble que ce sujet a déjà été évoqué, mais je ne le retrouve pas.

Code:
label Click
rem créer un CHECK
CHECK 1
' OPTION 1
on_click 1,Click : ' ce on_click est pris en compte par mark_on de la ligne 9 (???)
rem attendre 1 seconde
wait 1000
rem le cocher
mark_on 1 : ' est pris en compte comme un click de l'utilisateur (???)
rem attendre 1 seconde
wait 1000
rem le décocher
mark_off 1 : ' par contre ici il n'y a pas de prise en compte comme un click SI C'EST UN OPTION
' Autre remarque: si on place ON_CLICK après MARK_OFF il n'y a pas de simulation d'un click utilisateur
' on_click 1,Click
END

Click:
  message "L'utilisateur n'a pas cliqué sur le CHECK 1,"+chr$(13)+"Conclusion: mark_on 1 a simulé le click de l'utilisateur par programme,"+chr$(13)+"Comme si on avait un TRIGGER_CLICK ???"
RETURN

A mon sens, MARK_ON et OFF ne devrait pas déclencher un événement ON_CLICK même si cet événement a été déclaré, ce n'est pas son rôle Question

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: MARK_ON déclenche un événement ON_CLICK à la place de ...   Mer 18 Oct 2017 - 12:44

Je connaissais ce comportement, et pour cette raison, je fais systématiquement OFF_CLICK avant de toucher à l'état d'un OPTION ou CHECK, par programme. Puis, on ON_CLICK derrière.

Maintenant, est-ce que ce comportement a un sens, faudra voir avec Jack. Ce que je sais, c'est qu'en Delphi, le comportement est identique. Tout changement d'un CHECK, que ce soit par un clic de souris ou une commande par logiciel, déclenche l'évènement.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: MARK_ON déclenche un événement ON_CLICK à la place de ...   Mer 18 Oct 2017 - 13:17

Je me doutais que ce n'était pas un bug, mais un choix de Jack.
J'ignore si c'est une raison purement technique.

Si le programmeur souhaite simuler un click sur un CHECK il peut utiliser TRIGGER_CLICK.
MARK_OFF ne devrait servir uniquement qu'à cocher visuellement le CHECK car nous disposons de toutes les commandes pour gérer les événements pour CHECK et OPTION.

Reste à savoir ce que Jack en pense.

Ta solution de dépannage avec OFF_CLICK, Klaus, est valable, mais pas toujours possible.
Je bricolerais un petit code dans l'après-midi pour illustrer mon propos.

A+

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: MARK_ON déclenche un événement ON_CLICK à la place de ...   Mer 18 Oct 2017 - 15:44

Bon ben j'ai bricolé un code comme prévu, mais ça n'apporte rien à ce que je voulais démontrer.
Mon code fonctionne parfaitement malgré l'événement déclenché par MARK_ON.

Je le publie quand même, mais ATTENTION il y a création d'un fichier, donc enregistrer le code dans un dossier.
Le but de ce code est d'autoriser l'accès à un programme par un mot de passe avec l'option pour l'utilisateur de le mémoriser ou pas.
Le programme gère l'activation des objets en fonction de l'état du CHECK de mémorisation.
Quand l'utilisateur clique sur le CHECK il modifie la mémorisation du mot de passe pour le prochain lancement du programme.
Pour comprendre mieux faite le tourner plusieurs fois avec ou sans la mémorisation.

Code:
dim no%,mdp$,MemoriseMdp$
font_bold 0 : height 0,200 : top 0,(screen_y-height(0))/2 : left 0,(screen_x-width(0))/2
dir_change dir_current$
if file_exists("MotDePasse.txt")=0 then CreateFichierMotDePasse():' création du fichier
obj() :' Création des objets
gosub Start

END
rem ============================================================================
Start:
 ' initialise
  mark_off CheckMemorisMdp% : inactive CheckMemorisMdp% : inactive BtValide%
 ' on commence par charger le fichier
  clear Dlist1% : file_load Dlist1%,"MotDePasse.txt"
 ' on affecte le contenu du fichier aux variables correspondantes
  mdp$=item_read$(Dlist1%,1) : MemoriseMdp$=item_read$(Dlist1%,2)
 ' Suite du programme en fonction de l'état de la varible MemoriseMdp$
  if MemoriseMdp$="Oui"
      active CheckMemorisMdp% : mark_on CheckMemorisMdp%
      text Edit1%,mdp$ : active BtValide% : set_focus BtValide%
  else
      mark_off CheckMemorisMdp% : active Edit1% : set_focus Edit1%
  end_if
 ' en attente d'un événement
RETURN

Memorisation:
 ' Si on est là c'est qu'il y a eu un click sur le CHECK CheckMemorisMdp%
  if checked(CheckMemorisMdp%)=1 then MemoriseMdp$="Oui" :' message MemoriseMdp$
  if checked(CheckMemorisMdp%)=0 then MemoriseMdp$="Non" :' message MemoriseMdp$
 ' enregistrer la modif dans le fichier (par remplacement du fichier)
  file_open_write 1,"MotDePasse.txt" : file_writeln 1,mdp$ : file_writeln 1,MemoriseMdp$ :  file_close 1
RETURN

CtrlMdp:
  if key_up_code=13 then gosub CtrlMdp2
RETURN

CtrlMdp2:
 ' contrôle du mdp
  if text$(Edit1%)<>mdp$ then message "Mot de passe incorrect !" : text Edit1%,"" : return
 ' Si on est là c'est que la saisie est OK
  active CheckMemorisMdp% : active BtValide%
RETURN

Valide:
  message "L'accès au programme est autorisé."
  ' EXECUTE le programme
  terminate
RETURN

SUB obj()
 ' dim et label
  dim Dlist1%,Edit1%,CheckMemorisMdp%,BtValide%
  label Start,Memorisation,CtrlMdp,CtrlMdp2,Valide
 ' Dlist1% pour travailler sur le fichier
  no%=no%+1 : Dlist1%=no% : dlist no%
 ' Alpha Edit1%
  no%=no%+1 : alpha no% : caption no%,"Entrez votre mot de passe: (Bonjour)" : top no%,5 : left no%,5
 ' Edit1% por saisir le mot de passe
  no%=no%+1 : Edit1%=no% : edit no% : top no%,top(no%-1)+20 : left no%,5
 ' CheckMemorisMdp%
  no%=no%+1 : CheckMemorisMdp%=no% : check no% : top no%,top(no%-1)+50 : left no%,5
              width no%,300 : caption no%,"Mémoriser le mot de passe ? (coché=Oui)"
 ' BtValide%
  no%=no%+1 : BtValide%=no% : button no% : top no%,top(no%-1)+50 : left no%,5
              caption no%,"Valider"
 ' initialise
  inactive CheckMemorisMdp% : inactive BtValide%
 ' les événements
  on_click CheckMemorisMdp%,Memorisation : on_key_up Edit1%,CtrlMdp : on_click BtValide%,Valide
END_SUB

SUB CreateFichierMotDePasse()
    file_open_write 1,"MotDePasse.txt" : file_writeln 1,"Bonjour" : file_writeln 1,"Non" :  file_close 1
END_SUB

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: MARK_ON déclenche un événement ON_CLICK à la place de ...   Mer 18 Oct 2017 - 16:48

Même avec un objet inactivé, le ON_CLICK se déclenche toujours par la commande MARK_xxx. Fais comme ceci:
Code:
Start:
 ' initialise
  off_click CheckMemorisMdp%
  mark_off CheckMemorisMdp%
  inactive CheckMemorisMdp% : inactive BtValide%
 ' on commence par charger le fichier
  clear Dlist1% : file_load Dlist1%,"MotDePasse.txt"
 ' on affecte le contenu du fichier aux variables correspondantes
  mdp$=item_read$(Dlist1%,1) : MemoriseMdp$=item_read$(Dlist1%,2)
 ' Suite du programme en fonction de l'état de la varible MemoriseMdp$
  if MemoriseMdp$="Oui"
      active CheckMemorisMdp% : mark_on CheckMemorisMdp%
      text Edit1%,mdp$ : active BtValide% : set_focus BtValide%
  else
      mark_off CheckMemorisMdp% : active Edit1% : set_focus Edit1%
  end_if
  on_click CheckMemorisMdp%, Memorisation
 ' en attente d'un événement
RETURN
Il n'y aura plus de ON_CLICK intempestifs.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: MARK_ON déclenche un événement ON_CLICK à la place de ...   Mer 18 Oct 2017 - 18:08

Oui ta solution est bonne.

Et du coup, je me suis rappelé pourquoi j'avais un problème:  J'avais une apparition intempestive d'un message.

Donc, il y a 2 conditions pour ne pas avoir d'événements ON_CLICK intempestif:
1) il faut un OFF_CLICK N placé avant MARK_ON N
2) la déclaration ON_CLICK N,LABEL doit obligatoirement être placée après MARK_ON N
(N étant un CHECK ou une OPTION)

Finalement même si mon interrogation du départ sur le déclenchement d'un événement avec MARK_ON reste valable, on a une solution de contournement.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: MARK_ON déclenche un événement ON_CLICK à la place de ...   

Revenir en haut Aller en bas
 
MARK_ON déclenche un événement ON_CLICK à la place de ...
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Satellite_Heart || Don't stay at her place.
» Mise en place des objets
» [Résolu] disparition de place sur le disque dur
» Chasse aux oeufs ( Place Longueuil ) au profit d'Opération Enfant Soleil
» [Résolu] disque dur plein. Comment faire de la place?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: