Gambas France BETA


Pas de compte ? Incription

Déclarer et utiliser un Observer

Un Observer, pour quoi faire :


Quand on crée des objets, il est intéressant de pouvoir suivre les évènements qui leur sont attachés et, en fonction, pouvoir définir certaines actions.

Déclaration de base de l'Observer :


1
PRIVATE $hObs AS Observer '<-------------------' mon observer


Un exemple d'utilisation issu de la forge.


Utilisation de l'observer lors de la création d'un objet :



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
PUBLIC SUB MenuExterne_Click() '<--------------------------' affichage fenêtre externe ou pas

$DrawingArea1.Clear

IF bExterne THEN $ecran.Window.Close() '<---------------' fermeture de la fenêtre externe

IF NOT MenuExterne.Checked THEN
ME.AutoResize = FALSE
ME.Resizable = TRUE
Module_Settings.RestoreFormPosition(ME)
$ecran = $DrawingArea1
bExterne = FALSE
ELSE
$ecran = NEW Window '<------------------------------' Nouvel objet créé à la volée
$hObs = NEW Observer($ecran.Window) AS "obs" '<------' utilisation de l'observer attribué au nouvel objet
$ecran.H = $DrawingArea1.H * 1.618034 '<------------' définition des dimensions du nouvel objet
$ecran.W = $DrawingArea1.w * 1.618034 '<------------' définition des dimensions du nouvel objet
$ecran.SetFocus() '<---------------------------------' attribution du focus au nouvel objet
$ecran.Window.Show() '<------------------------------' on montre le nouvel objet
$ecran.Window.Text = ("~ Fenêtre Externe ~"
bExterne = TRUE
ENDIF

$mp.SetWindow($ecran) '<--------------------------------' sortie affichage sur $ecran interne ou externe
dimensions()
CATCH
Message.Title = ("Une erreur est survenue !")
Message.Error(Str(Error.Class) & ", code : " & Error.Code & "\n" & Str(Error.Backtrace) & " à " Error.Where)

END


Les évènements à suivre :



1
2
3
4
5
6
7
8
PUBLIC SUB obs_Close() '<---------------------------------' définition de l'évènement à récupérer

bExterne = FALSE
$ecran.Window.Close()
MenuExterne.Checked = FALSE
MenuExterne_Click()

END

1
2
3
4
5
PUBLIC SUB obs_KeyPress() '<---------------------------------' définition de l'évènement à récupérer

IF Key.Code = Key["F12"] THEN obs_Close()

END

Commentaires :


Lors de la fermeture de l'objet $ecran.Window, nous récupérons l'évènement de clôture et alimentons celui-ci des actions que nous voulons réaliser.
Sans la déclaration de l'Observer, nous ne pouvons pas récupérer l'évènement qui nous intéresse.

Liens :


Un premier lien vers la documentation.
Un deuxième lien vers la documentation.



====================

Navigation :



<-- Liens du Wiki : <--
<-- Accueil du WIKI : <--

====================

La Documentation :