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 :