4D Formulaires et objets

4D v12 Mise à jour

Formulaires et objets

4D v12 propose de nombreuses nouveautés relatives aux formulaires et aux objets qu’ils contiennent. Ces nouveautés facilitent et accélèrent le développement des interfaces de vos applications.

Extension des capacités des sous-formulaires

4D v12 augmente les capacités des sous-formulaires (aussi appelés formulaires inclus). Plus souples d’utilisation, programmables, utilisables en composant, ces objets de nouvelle génération sont désormais de puissants outils pour le développement de fonctions avancées et facilement portables.
Terminologie Afin de bien définir les notions mises en oeuvre avec les sous formulaires, voici quelques définitions relatives aux termes employés :
? sous-formulaire : formulaire destiné à être inclus dans un autre formulaire, lui-même nommé formulaire parent.
? formulaire parent : formulaire contenant un ou plusieurs sous formulaire( s).
? conteneur de sous-formulaire : objet inclus dans le formulaire parent, contenant une instance du sous-formulaire.
? instance de sous-formulaire : la représentation d’un sous-formulaire dans un formulaire parent. Cette notion est importante car il est possible d’afficher plusieurs instances d’un même sous-formulaire dans un formulaire parent.
Nouvelles propriétés Des propriétés supplémentaires peuvent désormais être associées via la
Liste des propriétés aux objets sous-formulaires installés dans les formulaires parents :
? Nom de la variable : une variable peut désormais être liée à un objet sous-formulaire. Par défaut, cette variable est nommée « Sous formulaire », comme l’objet lui-même. Elle a un type (cf. paragraphe suivant) et peut être représentée sous la forme d’une variable standard dans le formulaire parent. Sa modification déclenche des événements formulaire et permet ainsi de synchroniser les valeurs du formulaire parent et du sous-formulaire :
? L’événement formulaire Sur données modifiées permet d’indiquer au conteneur de sous-formulaire que la valeur de la variable a été modifiée côté sous-formulaire.
? Le nouvel événement formulaire Sur modif variable liée permet d’indiquer au sous-formulaire (méthode formulaire du sous formulaire) que la variable a été modifiée côté formulaire parent (cf. paragraphe “Mise à jour du contenu du sous-formulaire”, page 77).
? Type de la variable : permet de définir le type de la variable associée à l’objet sous-formulaire. Par défaut, le type Alpha est utilisé. Le type de la variable détermine la nature des valeurs échangées entre le formulaire parent et le sous-formulaire via la variable associée.
Vous pouvez définir le type « Aucun », dans ce cas 4D typera automatiquement la variable lors de l’exécution (cf. paragraphe “Variables dynamiques”, page 256).
? Source : dans les versions précédentes de 4D, cette propriété était libellée « Table source ». Elle permet désormais de sélectionner différents types de sources :
? <Aucun> : choisissez ce type de source si vous souhaitez utiliser un formulaire projet ou un formulaire de composant comme sous formulaire.
Ces sous-formulaires sont utilisables en mode page uniquement : l’option « Sous-formulaire liste » doit être désélectionnée pour qu’ils puissent fonctionner.
Pour qu’un formulaire de composant apparaisse dans la liste « Formulaire détaillé », il doit avoir été publié dans le composant (cf. paragraphe “Publier un sous-formulaire (composant)”, page 81).
? Nom de table : choisissez ce type de source si vous souhaitez utiliser des formulaires de la table (équivaut au fonctionnement précédent de 4D).
Note La propriété d’apparence « Plate-forme » disparaît, l’apparence est définie par le sous-formulaire lui-même et ne peut pas être modifiée.
? Méthode : un objet sous-formulaire peut désormais comporter une méthode objet, permettant de contrôler son fonctionnement, notamment lors du déclenchement d’événements (cf. paragraphe
suivant). A noter que l’interaction entre le contenu de l’objet sous formulaire et le formulaire parent doit être gérée par des mécanismes spécifiques (cf. paragraphe “Programmation inter-formulaires avancée”, page 78).
? Evénements formulaire : un objet sous-formulaire accepte les événements suivants :
? Sur chargement et Sur libération : respectivement ouverture et fermeture du sous-formulaire (ces événements doivent également avoir été activés au niveau du formulaire parent pour être pris en compte). A noter que ces événements sont générés avant ceux du formulaire parent.
A noter également que, conformément aux principes de fonctionnement des événements formulaire, si le sous-formulaire est placé sur une page autre que la page 0 ou 1, ces événements ne sont générés qu’au moment de l’affichage/la fermeture de la page (et non du formulaire).
? Sur validation : validation de la saisie dans le sous-formulaire.
? Sur données modifiées : la valeur de la variable de l’objet sous formulaire a été modifiée.
? Sur gain focus et Sur perte focus : le conteneur de sous-formulaire vient de recevoir ou de perdre le focus. Ces événements sont générés dans la méthode de l’objet sous-formulaire lorsqu’ils sont cochés. Ils sont envoyés à la méthode formulaire du sous-formulaire, ce qui permet par exemple de gérer l’affichage de boutons de navigation dans le sous-formulaire en fonction du focus.
A noter que les objets du sous-formulaire peuvent eux-mêmes recevoir le focus.
Notes – Il est possible de définir tout type d’événement personnalisé pouvant être généré dans un sous-formulaire via la nouvelle commande
APPELER CONTENEUR SOUS FORMULAIRE. Cette commande permet d’appeler la méthode de l’objet conteneur et de lui passer un code d’événement.
– Un nouvel événement formulaire, Sur modif variable liée, peut être géré au niveau du sous-formulaire (cf. paragraphe “Mise à jour du contenu du sous-formulaire”, page 77).
– Lorsque la commande FIXER MINUTEUR est exécutée dans le contexte d’un sous-formulaire (méthode formulaire du sous-formulaire), l’événement Sur minuteur est désormais généré dans le sous-formulaire et non au niveau du formulaire parent (fonctionnement des versions précédentes de 4D). Ce nouveau principe permet notamment de générer des événements Sur minuteur avec des intervalles différents dans chaque sous-formulaire et dans le formulaire parent.

Gestion de la variable liée

La variable liée au sous-formulaire permet de relier les deux contextes (formulaire et sous-formulaire) pour mettre au point des interfaces sophistiquées. Imaginons par exemple un sous-formulaire représentant une pendule dynamique, inséré dans un formulaire parent contenant
une variable saisissable de type heure :
Les deux objets (variable heure et conteneur du sous-formulaire) ont le même nom de variable. Dans ce cas, à l’ouverture du formulaire parent, les deux valeurs sont automatiquement synchronisées par 4D.
Si la valeur de la variable est définie à plusieurs emplacements, la valeur utilisée sera celle qui aura été chargée en dernier lieu. L’ordre de chargement suivant est appliqué :
1-Méthodes objet du sous-formulaire
2-Méthode formulaire du sous-formulaire
3-Méthodes objet du formulaire parent
4-Méthode formulaire du formulaire parent
A l’exécution du formulaire parent, la synchronisation des variables doit être effectuée par le développeur à l’aide des événements formulaires adéquats. Deux types d’interactions peuvent se produire : du formulaire vers le sous-formulaire et inversement.
Formulaire parent
10:15:00
Sous-formulaire
Objet conteneur du sousformulaire
(Nom de variable : Heureparis)
Variable Heureparis

Mise à jour du contenu du sous-formulaire

La valeur de la variable du formulaire parent est modifiée et cette modification doit être répercutée dans le sous-formulaire. Dans notre exemple, l’heure de Heureparis passe à 12:15:00, soit parce que l’utilisateur l’a saisie, soit parce qu’elle est mise à jour dynamiquement (via la commande Heure courante par exemple).
Dans ce cas, vous devez utiliser le nouvel événement formulaire Sur modif variable liée. Cet événement doit être coché dans les propriétés du sous-formulaire, il sera généré dans la méthode formulaire du sous formulaire.
L’événement formulaire Sur modif variable liée est généré :
? dès qu’une valeur est affectée à la variable du formulaire parent, même si la même valeur est réaffectée,
? si le sous-formulaire appartient à la page formulaire courante ou à la page 0.
A noter que, comme dans l’exemple ci-dessus, il est préférable d’utiliser la commande OBJET Lire pointeur qui retourne un pointeur vers le conteneur de sous-formulaire plutôt que sa variable car il est possible d’insérer plusieurs sous-formulaires dans un même formulaire parent (par exemple, une fenêtre affichant des fuseaux horaires contiendrait plusieurs pendules). Dans ce cas, seul un pointeur permet de connaître le conteneur de sous-formulaire à l’origine de l’événement.

Mise à jour du contenu du formulaire parent

Le contenu du sous-formulaire est modifié et cette modification doit être répercutée dans le formulaire parent. Dans notre exemple, imaginons que l’interface du sous-formulaire permette à l’utilisateur de déplacer « manuellement » les aiguilles.
Dans ce cas, vous devez affecter la valeur de l’objet à la variable du conteneur du sous-formulaire parent depuis le sous-formulaire.
Comme dans l’exemple précédent, il est conseillé d’utiliser pour cela la commande OBJET Lire pointeur avec le sélecteur Objet conteneur sous formulaire qui retourne un pointeur vers le conteneur du sous formulaire.
Cette affectation génère l’événement formulaire Sur données modifiées dans la méthode de l’objet conteneur du sous-formulaire parent, ce qui vous permet d’effectuer tout type d’action. L’événement doit être coché dans les propriétés du conteneur de sous-formulaire.
Note Bien entendu, la modification « manuelle » des aiguilles de la pendule génère également l’événement formulaire Sur données modifiées dans la méthode de l’objet de la variable valeur Pendule, dans le sous formulaire.

Programmation inter-formulaires avancée

La communication entre le formulaire parent et les instances des sous formulaires peut nécessiter d’aller au-delà de l’échange d’une valeur via la variable associée. En effet, vous pouvez souhaiter mettre à jour des variables dans les sous-formulaires en fonction d’actions effectuées dans le formulaire parent et inversement. Si l’on reprend l’exemple du sous-formulaire de type « pendule dynamique », on peut souhaiter définir une ou plusieurs heures d’alerte par pendule.
Pour répondre à ces besoins, de nouveaux mécanismes ont été mis en place dans 4D. Ces mécanismes sont les suivants :
? utilisation du paramètre « sous-formulaire » avec la commande OBJET Lire pointeur afin de désigner l’objet sous-formulaire et nouvelle commande OBJET Lire nom.
? appel de l’objet conteneur depuis le sous-formulaire via la nouvelle commande APPELER CONTENEUR SOUS FORMULAIRE,
? exécution d’une méthode dans le contexte du sous-formulaire via la nouvelle commande EXECUTER METHODE DANS SOUS FORMULAIRE.
Commandes OBJET Lire
Outre le sélecteur « Objet conteneur sous formulaire » (cf. paragraphe “Mise à jour du contenu du sous-formulaire”, page 77), la commande OBJET Lire pointeur admet un paramètre permettant de préciser dans quel sous-formulaire chercher l’objet dont le nom est passé en deuxième paramètre. Cette syntaxe n’est utilisable que lorsque le sélecteur « Objet nommé » est passé.
Par exemple, l’instruction suivante :
$ptr:=OBJET Lire pointeur(Objet nommé; »MonBouton »; »MonSousForm ») … permet de récupérer un pointeur sur la variable « MonBouton » se trouvant dans l’objet sous-formulaire « MonSousForm ». Cette syntaxe permet d’accéder depuis le formulaire parent à tout objet se trouvant dans un sous-formulaire. Pour une description complète de cette commande, reportez-vous à la commande OBJET Lire pointeur, page 163.
Note A noter également la nouvelle commande OBJET Lire nom qui permet de récupérer le nom de l’objet ayant le focus.
Nouvelle commande
APPELER CONTENEUR
SOUS FORMULAIRE
La nouvelle commande APPELER CONTENEUR SOUS FORMULAIRE permet à une instance de sous-formulaire d’envoyer un événement à l’objet conteneur du sous-formulaire, qui peut alors le traiter dans le contexte du formulaire parent. L’événement est reçu dans la méthode de l’objet conteneur. Il peut s’agir à l’origine de tout événement détecté par le sous-formulaire (clic, glisser-déposer, etc.). Ce mécanisme est illustré dans ce schéma :

APPELER CONTENEUR SOUS FORMULAIRE(-20)

Evénément personnalisé
Méthode objet du sous-formulaire
Exemple d’exécution de la commande APPELER CONTENEUR SOUS FORMULAIRE
Le code de l’événement est libre (par exemple, 20000 ou -100). Il ne doit correspondre à aucun événement formulaire existant. Il est conseillé d’utiliser une valeur négative pour avoir l’assurance que 4D n’utilisera pas ce code dans les versions futures.
Vous pouvez également utiliser un code correspondant à un événement existant (par exemple, 3 pour Sur validation), mais l’événement doit être autorisé et coché pour le conteneur de sousformulaire.
Pour une description complète de cette commande, reportez-vous au paragraphe “APPELER CONTENEUR SOUS FORMULAIRE”, page 141.
Nouvelle commande

EXECUTER METHODE DANS SOUS FORMULAIRE

Cette nouvelle commande permet à un formulaire ou à l’un de ses objets de demander l’exécution d’une méthode dans le contexte de l’instance du sous-formulaire, ce qui lui donne accès aux variables, objets, etc., du sous-formulaire. Cette méthode peut en outre recevoir des paramètres. Ce mécanisme est illustré dans ce schéma :
Note Si le sous-formulaire provient d’un composant, la méthode doit disposer de la propriété « Partagée entre les composants et la base hôte ».
Pour une description complète de cette commande, reportez-vous au paragraphe “EXECUTER METHODE DANS SOUS FORMULAIRE”, page 170.
Commande ALLER A OBJET (anciennement ALLER A CHAMP)
La commande ALLER A CHAMP a été renommée ALLER A OBJET et peut désormais rechercher l’objet de destination dans le formulaire parent même si elle exécutée depuis un sous-formulaire (cf. paragraphe
Exemple d’exécution de la commande EXECUTER METHODE DANS SOUS FORMULAIRE
EXECUTER METHODE DANS SOUS
FORMULAIRE(« SF1″; »meth »;$curtext)
xxx

Extension des capacités des sous-formulaires

Sous-formulaires en composants 4D v12 permet de publier des formulaires de composants comme sousformulaires dans les bases hôtes. Avec ce principe, vous pouvez notamment développer des composants proposant des objets graphiques. A noter que les nouveaux objets « widgets » proposés par 4D sont basés sur l’emploi de sous-formulaires en composants (cf. paragraphe “Widgets”, page 84).

Chapitre 1 Bienvenue
Conversion des anciennes bases
Bases en version 6.x, 2003.x et 2004.x
Bases en version 11
Mise à jour du fichier Macros.xml
Arrêt programmé de fonctions obsolètes
Affichage des apparences de plate-forme nommées
Mode contextuel du serveur Web
Configuration minimale
Chapitre 2 Architecture et base de données
Prise en charge des UUID
Présentation
Nouvelles propriétés UUID de champs
Recherche et tris dans les champs avec balises de style
Emplacements possibles pour le dossier Components
Chapitre 3 Atelier de développement
Réorganisation des préférences
Préférences et Propriétés
Personnalisation des paramètres et « Réglages d’usine »
Interaction avec la commande FIXER PARAMETRE BASE
Nouvelles préférences
Nouvelles propriétés de la base
Qu’est-ce que la récupération par marqueur d’en-tête ?
Procédure de récupération
Chapitre 4 Formulaires et objets
Extension des capacités des sous-formulaires
Terminologie
Nouvelles propriétés
Gestion de la variable liée
Programmation inter-formulaires avancée
Sous-formulaires en composants
Bibliothèque d’objets préconfigurés
Chapitre 5 Langage
Chaînes de caractères
Convertir vers texte
Communications
FIXER METADONNEES IMAGE
LIRE METADONNEES IMAGE
CONVERTIR IMAGE
LISTE CODECS IMAGES
ECRIRE FICHIER IMAGE
Commandes renommées
XML
Note sur l’usage de BLOBs XML dans 4D v12
Chapitre 6 SQL
Réplication via le SQL
Nouveaux champs virtuels
Activation de la réplication
Mise à jour côté base locale
Définir une clé primaire en création de colonne
Prise en charge des jointures
Présentation
Jointures internes explicites
Jointures externes
Utiliser des bases externes
Chapitre 7 Administration de 4D Server
A propos de 4D Server 64 bits
Fenêtre d’administration de 4D Server
Nouvelles informations mémoire
Disparition des utilisateurs « techniques »
Arrêt de la prise en charge des Services sous Mac OS
Annexe

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *