PANORAMIC: CLICKED ET ON_CLICK

PAGE PRINCIPALE /PAGE TUTORIELS

Il y a 2 possibilités pour traiter l'événement "Il y a eu un clic de souris sur un objet":

Objets sensibles à un clic de souris

Seuls les objets visibles et pour lesquels un clic a un sens sont sensibles à un clic de souris:

BUTTON

EDIT

MEMO

LIST

COMBO

ALPHA

OPTION

CHECK

SCENE3D

FORM

PICTURE

SUB_MENU

Utilisation d'un clic de souris

Lorsqu'on clique sur un objet, il y a 2 manières d'exploiter le fait qu'on a cliqué sur l'objet:

Première méthode:

On teste directement par la fonction CLICKED(N) que l'objet système numéro N a été cliqué .

Cette fonction rend 1 si on a cliqué sur l' objet numéro N et 0 sinon.
Sa particularité est qu'elle mémorise un clic sur un objet: si elle est appelée longtemps après le clic, elle donnera quand même le résultat "1".
De plus, s'il y a eu un clic, sa valeur est réinitialisé après la lecture. Si la valeur est 1, elle est alors réinitialisée à 0 pour prendre en compte un nouveau clic sur l'objet.

La fonction CLICKED(N) permet de tester en mode séquentiel s'il y a eu un click sur l'objet de numéro N.
Le mode séquentiel est une technique de programmation qui permet de tout controler par le programme et de tester par le programme si des événements ont eu lieu.

 

Deuxième méthode:

On écrit un sous-programme, défini par un LABEL (et se terminant par RETURN comme tout sous-programme) qui sera exécuté à chaque fois que l'objet système sera cliqué.
Avec cette autre technique de programmation, appelée programmation événementielle, on définit dans un sous-programme ce qui se passe quand un événement arrive, en l'occurence, le clic sur un objet système et c'est le système d'exploitation (Windows) qui fera exécuter ce sous-programme quand l'événement arrivera.

Pour relier ce sous-programme à l'objet système, on utilise la commande ON_CLICK(N) , abc

ON_CLICK(N) , abc signifie : tout clic sur l'objet numéro N provoquera l'exécution de la partie du programme commençant par "abc".

On va effectuer la même action, mais en utilisant les deux méthodes possibles:

On va par exemple afficher dans le bandeau de la fenêtre "on a cliqué" lorsqu'on clique sur un bouton.

Méthode séquentielle: on teste l'événement par programme avec CLICKED

On crée d'abord le bouton : BUTTON 1

Comme on doit tester continuellement l'état du bouton par CLICKED on va mettre cette commande dans une boucle WHILE.

 

button 1 : rem on crée un bouton (objet système numéro 1)

while clicked(1) = 0 : rem tant qu'on n'a pas cliqué sur le bouton

wait 100 : rem on fait 100 millisecondes de pause...

end_while : rem on retourne tester l'état du bouton...

 

caption 0 , "on a cliqué" : rem on affiche un texte dans le bandeau de la fenêtre

 

Méthode événementielle: on affecte un sous-programme à un événement

A chaque fois qu'on clique sur un bouton, on va exécuter la partie de programme qui commence par exemple par "clique".
"clique" est un LABEL. On le définit par le mot-clé LABEL.

On crée un bouton: BUTTON 1

Puis par la commande on_click 1,clique

on indique qu'à chaque fois qu'on cliquera sur l'objet système numéro 1 (c'est à dire le bouton), on exécutera la partie du programme marquée par le LABEL clique.

 

label clique : rem on crée une marque (un "label" en anglais)

 

button 1 : rem on crée un bouton (objet système numéro 1)

on_click 1,clique : rem à chaque clic sur l'objet 1 on exécute à partir de "clique"

end : rem fin du programme principal

 

clique:

caption 0 , "on a cliqué" : rem on affiche un texte dans le bandeau de la fenêtre

return : rem fin du sous-programme

 

Mise à jour : 10 novembre 2008