|
VADELIA |
|
|
|
(I/B) (C/S) |
Paragraphe d'utilisation
DECLARATION
Syntaxe
OBJET_GRAPHIQUE(<NOM_OBJET> | *FENETRE | *ITEM_MENU ) <NomVariableObjGraphique> [*DEF<DéfinitionAdélia>]
Description
Déclaration d'une variable de type objet graphique, de nom NomVariableObjetGraphique, dont le type est soit un objet graphique si <NOM_OBJET> est spécifié, soit une fenêtre si *FENETRE est utilisé, soit un item de menu si *ITEM_MENU est utilisé. Le but est de pouvoir écrire du code générique par rapport à un type d'objet ou de pouvoir manipuler un objet graphique en dehors de son programme (utile, par exemple, pour les fenêtres filles).
<NOM_OBJET> est un des objets graphiques définis au niveau de l'environnement. (Exemple : ARBORESCENCE, BOITE_A_COCHER, BOUTON, CHAMP_DE_SAISIE, CHAMP_EN_SORTIE, etc.)
Cette variable objet graphique peut ensuite être affectée, et les propriétés instanciées de cet objet, manipulées.
Cependant, seules les propriétés de type fixe peuvent être manipulées directement. Pour accéder à ces propriétés dont le type Adélia est défini, il faut utiliser la syntaxe habituelle :
MaVarObjGraphique:Propriété.
Pour les propriétés dont le type est fixé lors du maquettage (par exemple VALEUR), il faut, dans le langage L4G, utiliser des propriétés de type mixte par l'intermédiaire d'un forçage de type (Cast). Pour accéder à une propriété de type mixte, il faut obligatoirement forcer le type de la propriété, que celle-ci soit utilisée en lecture et/ou en écriture. Ce forçage de type peut être fait directement par une définition de type Adélia, ou par une variable dont la définition Adélia (type, longueur et nombre de décimales) est reprise.
Attention :
Le forçage de type doit correspondre exactement au type de la propriété de l'objet désigné par la variable objet graphique, au risque sinon de provoquer des écrasements de mémoire à l'exécution.
Définition forcée de la propriété VALEUR par *DEF
Il est possible de figer le type Adélia (type, longueur, décimales) de la propriété VALEUR en ajoutant le mot clé *DEF(définition). L'objet graphique doit posséder la propriété VALEUR.
Exemple :
OBJET_GRAPHIQUE(CHAMP_DE_SAISIE) MonObjetChamp1 *DEF(NUM_BIN_4)
OBJET_GRAPHIQUE(CHAMP_DE_SAISIE) MonObjetChamp2 *DEF(ALPHA(12))
OBJET_GRAPHIQUE(CHAMP_DE_SAISIE) MonObjetChamp3 *DEF(NUM_E(3,2))
Cette syntaxe permet de déclarer un objet générique, mais dont la propriété VALEUR est du type spécifié. Dans ce cas, la propriété VALEUR n'est plus de type mixte, et ne doit donc plus être utilisée par l'intermédiaire d'un forçage de type (cast).
Exemple :
MonObjetChamp1 = MaFenetre.MonChampNumerique
MonObjetChamp1 :VALEUR = 444
MonObjetChamp2 = MaFenetre.MonChampALPHA
SI MonObjetChamp2 :VALEUR = 'blabla'
..
FIN
Cette syntaxe permet également de faire une déclaration implicite de la liste, dans le cas d'une variable de type OBJET_GRAPHIQUE qui possède la propriété LISTE.
Exemple :
OBJET_GRAPHIQUE(COLONNE) MaVarColonne *DEF(NUM_E(5,2))
La propriété liste de la colonne est définie comme colonne unique, en NUM_E(5,2).
MaVarColonne étant un objet COLONNE, elle possède la propriété LISTE. Pour utiliser cette propriété LISTE, la définition de cette LISTE doit être connue, ce qui est fait ici par l'intermédiaire de *DEF.
Pour déclarer la propriété LISTE d'une variable de type OBJET_GRAPHIQUE, il faut utiliser l'ordre LISTE. Dans ce cas, il faudra que les variables de type OBJET_GRAPHIQUE qui composent la LISTE soient déclarées à l'aide de *DEF, afin que la LISTE ait une définition (et ne soit pas constituée de zones de type MIXTE).
Exemple :
OBJET_GRAPHIQUE (COLONNE) VAR_OBJ_COL1 *DEF(NUM_BIN_4)
OBJET_GRAPHIQUE (COLONNE) VAR_OBJ_COL2 *DEF(ALPHA(12))
OBJET_GRAPHIQUE (COLONNE) VAR_OBJ_COL3 /* donc sans définition
OBJET_GRAPHIQUE (LISTE) VAR_OBJ_LISTE
LISTE VAR_OBJ_LISTE :LISTE VAR_OBJ_COL1 VAR_OBJ_COL2 /* correct : 2 zones déclarées
LISTE VAR_OBJ_LISTE :LISTE VAR_OBJ_COL1 VAR_OBJ_COL3 /* interdit : VAR_OBJ_COL3 mixte
Remarques :
Une variable OBJET_GRAPHIQUE :
- ne peut pas être utilisée dans une DS (Data Structure) ;
- ne peut pas être utilisée comme zone d'une liste ;
- peut être manipulée dans la partie cliente d'un programme VA_I, MA_I ou VA_B ;
- peut être un paramètre formel d'un programme VA_I, MA_I ou VA_B, ou d'une procédure cliente.
Une propriété d'une variable OBJET_GRAPHIQUE peut être manipulée dans les parties clientes et serveurs d'un programme VA_I, MA_I ou VA_B.
Une propriété mixte d'une variable OBJET_GRAPHIQUE ne peut pas être zone de DS (Data Structure).
Les noms de fenêtres désignés par des ordres Adélia (EXECUTER, INITIALISER, etc.) ne peuvent pas être substitués par des variables OBJET_GRAPHIQUE de type *FENETRE.
L'affectation unaire des variables de type OBJET_GRAPHIQUE ne peut être faite qu'en partie cliente.
Le client Java n'est pas géré.
Par exemple
Exemple 1
OBJET_GRAPHIQUE(CHAMP_DE_SAISIE) MonObjetGraphiqueChamp
MonObjetGraphiqueChamp = MAFENETRE.MONCHS
MonObjetGraphiqueChamp:VISIBILITE = *FAUX
MonObjetGraphiqueChamp:LONGUEUR = 111
MonObjetGraphiqueChamp = MonObjetGraphiqueBis
Exemple 2
OBJET_GRAPHIQUE(*FENETRE) MonObjetFenetre
MonObjetFenetre = MAFENETRE
MonObjetFenetre:VISIBILITE = *VRAI
MonObjetFenetre:LARGEUR = 666
Exemple 3
OBJET_GRAPHIQUE(*ITEM_MENU) MonObjetItemMenu
MonObjetItemMenu = MAFENETRE[MONMENU]
MonObjetItemMenu:TEXTE = 'mise a jour du texte du menu'
MonObjetItemMenu:COCHE = *VRAI
Exemple 4
OBJET_GRAPHIQUE(LISTE) VAR_OBJ_LISTE