IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Conversion en 4D 2004


précédentsommaire

15. Questions-réponses


Document publié également sur notre site web www.4D.fr, rédigé par Yves Casquel, Ingénieur Support Technique 4D SA et le Support Technique 4D SA.


La version 2004 a introduit une grande amélioration en matière de gestion des formulaires utilisés pour un affichage sous forme de liste. En effet cette version, contrairement aux versions précédentes, uniformise les différentes utilisations des formulaires de " sortie " pour un affichage sous la forme d'une liste.


Dans les versions précédentes, trois types de formulaires pouvaient être utilisés sous forme de liste :

   • formulaire de sortie en mode utilisation : saisissable en liste

   • formulaire de sortie utilisé avec les commandes : VISUALISER SELECTION et MODIFIER SELECTION : non saisissable en liste

   • formulaire de sortie utilisé dans une table incluse : impossibilité d'utiliser la sélection de ligne (multisélection du mode utilisation)


Malheureusement, ces trois modes d'utilisation entraînaient une mise en œuvre ainsi que des choix d'utilisation différents.

La version 2004 uniformise le mode de fonctionnement des formulaires utilisés en mode liste dans les trois cas illustrés ci-dessus. Quelques différences , minimes, sont à souligner pour les sous-formulaires.

15-1. Rappel sur quelques notions fondamentales


   • Sélection courante

Lorsque vous effectuez des opérations sur des données, vous sélectionnez le groupe d'enregistrements avec lequel vous voulez travailler. Ce groupe d'enregistrements est appelé "sélection courante". La sélection courante peut contenir un, plusieurs ou tous les enregistrements d'une table. Chaque table dispose de sa propre sélection courante d'enregistrements.

   • Enregistrement courant

Cas général : lorsque 4D établit une sélection courante, il charge en mémoire le premier enregistrement de la sélection. Cet enregistrement est appelé "Enregistrement courant". Dans certains cas particuliers, il peut arriver qu'il n'y ait pas d'enregistrement courant ou que l'enregistrement courant n'appartienne pas à la sélection courante. Dans d'autres cas, l'enregistrement courant, bien que défini, n'est pas chargé en mémoire - on parle alors de "pointeur d'enregistrement courant".

   • Ligne surlignée utilisée dans les formulaires affichés sous forme de liste

Celle-ci correspond à l'enregistrement courant dans le cas de l'utilisation de formulaire affiché sous forme de liste dont la propriété "mode de sélection" (voir ci-dessous) est "ligne unique". Dans l'autre cas du mode de sélection dit "lignes multiples" (voir ci-dessous), l'enregistrement courant n'est pas affecté par l'action de surlignage d'un utilisateur ou par l'action de commandes du langage 4D qui permettent le surlignage.

15-2. Présentation des propriétés des sous-formulaires en version 2004 et de la compatibilité assurée par cette version


Dans le cadre de bases converties, 4D propose une propriété de sous formulaire supplémentaire pour assurer la compatibilité des bases. Cette propriété n'apparaît plus lors de la création d'une base en version 2004.

Il s'agit de la propriété : double clic sur ligne vide.

Image non disponible
Propriétés d'une base convertie en 2004
Image non disponible
Propriétés d'une base créée en 2004

Il faut cependant être attentif sur la propriété "Double-clic sur ligne vide" des bases converties. En effet, il est déconseillé d'utiliser cette propriété pour permettre de rendre les applications conformes aux recommandations ergonomiques de chaque OS.

15-3. Pourquoi l'enregistrement courant n'est-il plus chargé lors de l'utilisation d'un formulaire liste si le mode de sélection choisi est : ligne unique ?


Tout affichage ou rafraîchissement, de la fenêtre qui contient un formulaire affiché sous la forme d'une liste, provoqué par le système (OS), activera le mécanisme de déchargement de l'enregistrement courant mais conservera la position du pointeur d'enregistrement courant.

Ce nouveau principe impose l'utilisation de la commande CHARGER ENREGISTREMENT qui provoquera le chargement de l'enregistrement courant pour obtenir son contenu.

Dans certains cas, cette commande devra être placée dans l'événement formulaire "sur chargement" du formulaire principal.

15-4. Pourquoi le rafraîchissement d'une fenêtre provoque le déchargement de l'enregistrement courant d'un formulaire affiché sous forme de liste ?


Le mécanisme de la prise de focus par un objet 4D provoque le rafraîchissement de la fenêtre de premier plan ce qui entraîne le déchargement de l'enregistrement courant dans les formulaires affichés sous forme de liste.

Ce nouveau principe obligera le développeur, dans certain cas, à utiliser la commande CHARGER ENREGISTREMENT.

Remarque :
un objet de type bouton peut être focusable.

15-5. Pourquoi y a-t-il, dans certains cas, un enregistrement surligné automatiquement dans un formulaire affiché sous forme de liste lors d'un premier affichage ?


Ce phénomène dépend du choix du mode de sélection utilisé.


Si le mode de sélection choisi est :

   • mode ligne unique

4D surligne automatiquement l'enregistrement courant du formulaire affiché sous forme de liste.
L'enregistrement courant n'est pas chargé.
Il est cependant possible d'utiliser la commande ALLER DANS SELECTION ([table] ;0) qui provoquera le déchargement de l'enregistrement courant ainsi que l'effacement du pointeur d'enregistrement courant.
Il n'y aura alors plus d'enregistrement surligné.

L'ensemble de ces commandes peuvent se situer dans l'événement formulaire Sur chargement.

Voir la question : "Comment maîtriser le surlignage dans les formulaires affichés sous forme de liste par programmation ?"

   • mode multiligne

L'utilisation de ce mode de sélection ne provoque aucun surlignage de ligne de manière automatique lors du premier affichage du formulaire.
L'enregistrement courant est déchargé.
Les données de celui-ci ne sont donc pas disponibles dans l'événement formulaire Sur clic.

Remarques :
Ces modes de sélection sont paramétrables dans :
   · Les commandes MODIFIER SELECTION et VISUALISER SELECTION à l'aide des nouvelles options.
   · Les propriétés des formulaires inclus.

15-6. Pourquoi n'y a-t-il plus de partie blanche dans les formulaires affichés sous forme de liste ?


Dans le cadre d'une volonté de rendre 4D (version 2004) conforme aux recommandations ergonomiques de chaque système (OS), le comportement des formulaires utilisés sous forme de liste a changé.

La version 2004 n'affiche cette partie vide de tout enregistrement que lorsque le nombre d'enregistrements est inférieur au nombre d'enregistrements affichables dans la fenêtre qui contient cette liste. Dans l'autre cas c'est le dernier enregistrement qui forme le bord inférieur de la fenêtre.

Remarque :
en version 2003 il s'agissait d'une partie blanche. La version 2004 traite cet emplacement comme une partie vide de tout enregistrement.


Les applications qui présentent des listes d'enregistrements, ne permettent pas d'actions utilisateur dans les parties vides (ou blanche) de la fenêtre si celle-ci n'est pas complètement utilisée pour l'affichage d'informations.

Dans les versions précédentes de 4D, il était possible d'effectuer un "double clic" dans cette partie blanche pour ajouter un enregistrement. Ce n'est plus le cas pour les formulaires qui sont créés en version 2004.

Les formulaires convertis suivent toujours le principe des versions précédentes sauf pour ceux dont les propriétés auraient été modifiées.

Remarque :
Ce principe ne permet plus la création d'enregistrement si l 'emplacement réservé à l'affichage de la liste est complet.

15-7. Pourquoi vaut-il mieux ne pas utiliser la propriété "double clic sur ligne vide" des formulaires listes et inclus qui ont été convertis en version 2004?


Cette propriété a été ajoutée à la version 2004 afin d'assurer une compatibilité des versions précédentes. Cette propriété est seulement disponible pour des formulaires qui ont été convertis. Elle n'apparaît pas sur les formulaires créés en version 2004.

Il est conseillé, dans le cadre du respect de la nouvelle ergonomie de la version 2004, de ne pas utiliser cette propriété.

Si cette propriété est utilisée, elle ne permettra pas la création d'enregistrement si l 'emplacement réservé à l'affichage de la liste est complet.

15-8. Comment ajouter des enregistrements d'une manière autre que par le double clic sur la partie blanche d'une liste en version 2004 ?


   • L'association d'un bouton et d'une action automatique suivante : Ajouter sous enregistrement

Ce mécanisme existait dans les versions précédentes.
La version 2004 a apporté une possibilité supplémentaire : cette action automatique peut être utilisée dans les formulaires de sorties associés à la commande MODIFIER SELECTION ainsi que dans les formulaires de sortie utilisés comme inclus.

   • L'association d'un bouton et d'une méthode-objet
Ce script contiendra la commande AJOUTER ENREGISTREMENT

Remarques :

l'emplacement de ces boutons utilisés dans un formulaire sous forme de liste est différent suivant le mode d'utilisation de ce formulaire :

- Cas d'un formulaire principal qui contient un formulaire inclus
Les boutons associés au formulaire inclus peuvent se situer dans le formulaire principal.

- Cas d'un formulaire inclus (nouveauté 2004)
Les boutons peuvent se situer dans les zones d'entête, de rupture.

- Cas d'un formulaire affiché sous forme de liste (non inclus)
Les boutons peuvent se situer dans les zones d'entête, de rupture ou de pied de page.

   • L'association d'une ligne de menu et d'une méthode.
Cette méthode contiendra la commande CREER ENREGISTREMENT, ou toutes commandes susceptibles de changer la sélection du formulaire inclus.

   • Utiliser le système de raccourci de touche situé dans les préférences comme le montre l'image ci-dessous :

Image non disponible

Remarques :

Il est possible d'utiliser les actions automatiques et commandes suivantes :

   · Supprimer sous enregistrement
   · Modifier sous enregistrement
   · MODIFIER ENREGISTREMENT
   · SUPPRIMER ENREGISTREMENT

dans le cadre d'un des quatre principes évoqués ci-dessus.

15-9. Quel mode de sélection est utilisé pour les formulaires affichés sous forme de liste lorsqu'ils sont convertis en version 2004.


Le tableau ci-dessous présente le modèle de conversion des formulaires affichés sous forme de liste liée à cette nouvelle propriété.

Conversion des modes d'utilisation 2003 en mode d'utilisation en 4D 2004 :

Mode d'utilisation du formulaire en version 2003 Mode de sélection en 4D 2004
Sous formulaire Saisissable
Double cliquable
Saisissable en liste
Double-clic sur ligne : Modifier enregistrement
Double-clic sur ligne vide : Ajouter enregisterment
Mode de sélection : aucun
Sous formulaire Non-modifiable Non-saisissable en liste
Double-clic sur ligne : Ne rien faire
Double-clic sur ligne vide : Ne rien faire
Mode de sélection : aucun
Sous formulaire Sélectionnable
Double cliquable
Non-saisissable en liste
Double-clic sur ligne : Afficher enregistrement
Double-clic sur ligne vide : Ne rien faire
Mode de sélection : ligne unique
Formulaire liste utilisé avec les commandes suivantes :
MODIFIER SELECTION
VISUALISER SELECTION
Multiligne
Formulaire liste utilisé en mode utilisation Multiligne



La version 2004 propose trois modes de sélection qui sont mis en œuvre dans les formulaires affichés sous forme de liste (inclus compris) qui permettent de sélectionner des enregistrements.


Voici ces trois modes :

   • Ligne unique (sélection d'une seule ligne)
   • Multilignes (sélection d'une ou plusieurs lignes)
   • Aucun (aucune sélection possible)

La mise en place de ce nouveau mode de sélection permet :

   • A l'utilisateur, grâce aux flèches de déplacement et combinaisons de touches telles que shift et touche ou à l'aide de la souris, de surligner un ou une suite d'enregistrements selon les propriétés du mode de sélection (ligne unique ou multiples) paramétrées par le développeur dans les formulaires utilisés sous forme de liste. L'utilisateur ne pourra effectuer aucun surlignage si la propriété : mode de sélection est paramétrée sur " aucun ".
   • Au développeur de maîtriser ce mode par programmation.
Cette partie est traitée dans la question : "Comment maîtriser le surlignage dans les formulaires affichés sous forme de liste par programmation ?"

15-10. Pourquoi, l'événement formulaire "sur clic" ne provoque-t-il pas systématiquement le chargement de l'enregistrement courant ?


Ce comportement se rencontre uniquement si le formulaire utilisé sous forme de liste est paramétré pour fonctionner avec les modes de sélection suivant :

     · multiligne
     · aucun

Dans le cas du mode de sélection "multiligne", le clic est uniquement réservé au surlignage ou à l'effacement du surlignage par action inverse.

Si le mode "aucun" est utilisé, aucune action n'est possible.

Ce comportement est donc lié au choix du mode de sélection.

Pour de plus ample information sur ce mode, veuillez vous reporter à la question : "Quel mode de sélection est utilisé pour les formulaires affichés sous forme de liste lorsqu'ils sont convertis en version 2004 ?"

15-11. Pourquoi, l'événement formulaire "Sur affichage corps" est-il appelé lors de l'affichage de lignes blanches ?


L'événement formulaire Sur affichage corps est désormais activé lors de l'affichage de chaque ligne contenue dans la fenêtre que compose le formulaire affiché sous forme de liste.

Cela implique que cet événement est aussi généré lors de l'affichage de lignes vides. Celles-ci peuvent d'ailleurs aussi correspondre à des enregistrements détruits de la sélection (cas des modes client serveur ou multiprocess).

Il faut donc aménager le code en conséquence pour que l'affichage ou l'intégrité du formulaire affiché sous forme de liste ne soit pas perturbé.

Pour éviter d'exécuter du code qui perturberait l'affichage, il est conseillé d'utiliser ce principe :

Au cas ou
   : (Evenement formulaire = sur affichage corps)
Si (Enregistrement charge)
code qui correspond à l'affichage des enregistrements
Sinon
action sur les lignes du formulaire affiché sous forme de liste qui ne possèdent pas d'enregistrements
Fin de si
Fin de cas

En version 2004, 4D affiche aussi les lignes vides (celles qui ne possèdent pas d'enregistrements associés) afin de respecter les recommandations ergonomiques de chaque système (OS).

15-12. Pourquoi le triangle clignotant situé en haut à gauche d'un formulaire inclus lors de sa sélection n'existe plus ?


Dans le cadre d'une volonté de rendre 4D (version 2004) conforme aux recommandations ergonomiques de chaque système (OS), la représentation graphique de la prise du focus par les formulaires inclus a changé. C'est pour cette raison que le petit triangle noir des versions précédentes n'est plus utilisé.

La symbolisation de la prise de focus, en version 2004, suit maintenant les règles de l'OS utilisé. Il est cependant possible de simuler l'ancien mécanisme. Pour cela, il suffit de créer une image dans le formulaire, à côté du formulaire inclus, puis d'activer celle-ci grâce aux événements formulaires Sur gain focus et Sur perte focus de la méthode formulaire du formulaire qui accueille le formulaire inclus.

15-13. Pourquoi, certains objets (champs ou variables) n'apparaissent plus dans un formulaire affiché sous forme de liste en version 2004 ?


Le mécanisme d'affichage des objets, en version 2004, a été optimisé. Cette optimisation entraîne une organisation plus fine des objets mais aussi plus efficace pour l'affichage.


Tout objet situé dans l'une des zones suivantes d'un formulaire affiché sous forme de liste :

     · zone d'en-tête

     · zone de corps

     · zone de rupture

doit, obligatoirement faire partie intégrante de cette zone. Aucun chevauchement d'objet (au pixel près) sur l'un des taquets qui forment la limite de la zone de " corps " n'est admis sous peine d'une perturbation de l'affichage dû au fait de l'optimisation de celui-ci.


Dans le cadre d'une conversion, il sera prudent de vérifier les taquets des formulaires affichés sous forme de liste.

15-14. Pourquoi, le décor des formulaires affichés sous forme de liste, n'a plus la même apparence en version 2004 ?


Le mécanisme d'affichage des objets, en version 2004, a été optimisé. Cette optimisation entraîne une organisation plus fine des objets mais aussi plus efficace pour l'affichage.

Tout objet, généralement d'ornement, dont la partie supérieure débute dans la zone d'en-tête et la partie inférieure se termine dans la zone de rupture est désormais dessiné en une seule fois, par extension de la hauteur de l'objet

15-15. Pourquoi la saisie en liste semble ne pas fonctionner ?


La version 2004, dans le cadre de la mise en conformité avec les différents systèmes (OS), a uniformisé la gestion du clic.

   • Un premier clic permet de sélectionner la ligne à éditer.
   • Un second clic sur l'élément désiré permet de modifier cet élément. Un petit délai d'attente est généré entre le second clic et le passage en mode édition afin de déterminer s'il ne s'agissait pas d'un double clic.

Si le délai d'attente entre deux clics est très rapproché il s'agit d'un double clic sinon le clic est interprété comme simple clic.

15-16. Comment permettre l'édition d'un champ ou variable dans un formulaire utilisé sous la forme de liste par programmation ?


Le langage propose la nouvelle commande EDITER ELEMENT.

Dans le cadre des formulaires inclus et des formulaires liste, la commande passe en édition le premier champ de la ligne spécifiée, dans l'ordre de saisie.

EDITER ELEMENT ({*;} "Nom du sous-formulaire"{; élément})
Elément : n° de la ligne en mode multilignes
Si rien n'est indiqué, s'applique à l'élément courant
Si pas d'élément courant, s'applique au premier élément de la liste.

L'utilisation de cette commande active les événements formulaire :
   · Sur nouvelle selection
   · Sur chargement ligne

Pour passer la liste ou le sous-formulaire en saisie, on peut aussi utiliser la commande :
   · CHOIX SAISISSABLE([Table] ;Vrai)
   · CHOIX SAISISSABLE(*;"Nom du Sousform";Vrai)

CHOIX SAISISSABLE fonctionne avec un sous-formulaire uniquement si elle se trouve dans la méthode formulaire du sous-formulaire.

15-17. Comment initialiser les variables d'une ligne qui passe en mode édition par programmation ou par une action de l'utilisateur ?


La modification du mécanisme de l'événement formulaire , en version 2004, (voir la question : "Pourquoi, l'événement formulaire sur affichage corps est-il appelé lors de l'affichage de lignes blanches ?") a entraîné la création d'un nouvel événement :

Sur chargement ligne


Présentation du mécanisme de l'événement Sur chargement ligne

Cet événement est activé si le formulaire est saisissable sous forme de liste. Dans ce cas, il peut être provoqué :
- par l'action de l'utilisateur qui clique dans une zone saisissable qui passe en édition
- par la commande EDITER ELEMENT


Programmation associée à l'événement Sur chargement ligne

Il est possible d'initialiser les variables qui sont en relation avec l'enregistrement courant afin de présenter les bonnes valeurs au moment de l'édition. En effet, le mécanisme de l'événement formulaire Sur affichage corps met a jour les variables de chaque enregistrement en cours d'affichage. Ces valeurs peuvent ne pas correspondre aux valeurs de l'enregistrement courant qui passe en mode édition.

L'édition d'un enregistrement, dans un formulaire affiché sous forme de liste, qui possède des variables, rend quasiment obligatoire l'utilisation de cet événement.

15-18. Comment maîtriser le surlignage dans les formulaires affichés sous forme de liste par programmation ?


Le langage permet de surligner un ou une suite d'enregistrements suivant le mode de sélection choisi dans les propriétés du formulaire.

Pour les formulaires utilisés comme formulaire inclus, il ne faut pas associer de relation entre le mécanisme de surlignage (enregistrement(s) sélectionné(s)) et le mécanisme de l'ensemble nommé "user set". Pour ce cas précis, l'ensemble "user set" n'est pas créé.


Le choix d'un mode implique une programmation différente.

  • Le mode : ligne unique

    Le surlignage d'un enregistrement peut être réalisé à l'aide de la commande du langage ALLER DANS SELECTION ou tous autres commandes qui permettent le déplacement de l'enregistrement courant ou du mécanisme des liens automatiques qui feront de l'enregistrement courant l'enregistrement surligné.

    La nouvelle valeur acceptée, à partir de la version 2004.1 , par la commande :
    ALLER DANS SELECTION (table ;0) (nouvelle valeur : zéro)
    provoque le déchargement de l'enregistrement courant ainsi que l'effacement du pointeur d'enregistrement courant. Il n'y aura alors plus d'enregistrement surligné.


  • Le mode : multilignes

    Le surlignage d'un ou d'une suite d'enregistrements peut être réalisé à l'aide de la commande MARQUER ENREGISTREMENTS. Cette commande active automatiquement le mécanisme de marquage des enregistrements mais décharge l'enregistrement courant sans affecter sa position. Le pointeur d'enregistrement courant n'est pas déplacé.

Remarque :
Les deux modes de sélection, cités ci-dessus, sont paramétrables dans :
   · Les commandes MODIFIER SELECTION et VISUALISER SELECTION à l'aide des nouvelles options
   · Les propriétés des formulaires inclus

15-19. Comment savoir si l'utilisateur a surligné un ou des enregistrements dans un formulaire affiché sous forme de liste par programmation ?


L'événement formulaire Sur nouvelle sélection permet de trouver, par programmation, les enregistrements surlignés.

Cet événement pourrait s'appeler "Sur nouvelle sélection utilisateur". Il est activé lorsque l'utilisateur surligne chaque enregistrement.


Suivant le mode de sélection choisi dans les propriétés du formulaire, la méthode de recherche n'est pas identique :

   • Le mode : ligne unique

La fonction Numero dans selection permet d'obtenir la position de l'enregistrement surligné dans la sélection.

   • Le mode : multilignes
La commande LIRE ENREGISTREMENTS MARQUES (nouveauté 2004) permet au développeur d'obtenir la liste des enregistrements marqués par l'utilisateur pour les formulaires affichés sous forme de liste. Cette commande n'est pas utilisable en mode ligne unique.

   • Le mode : aucun
L'utilisateur ne peut pas surligner de ligne.
L'événement "Sur nouvelle sélection" est inactif.

Remarque :
Les trois modes de sélection, cités ci-dessus, sont paramétrables dans :
   · Les commandes MODIFIER SELECTION et VISUALISER SELECTION à l'aide des nouvelles options
   · Les propriétés des formulaires inclus

15-20. Quels sont les nouveaux événements principaux utilisables avec les formulaires sous forme de liste ?


Dans les versions précédentes, les événements "clic" et "double clic" étaient souvent utilisés pour la gestion des enregistrements dans les formulaires inclus.


En version 2004 sont apparus deux nouveaux événements :

  • Sur nouvelle selection

    Modification de l'enregistrement courant ou modification de la sélection courante dans un formulaire liste, un sous-formulaire ou une ListBox

    Veuillez vous reporter a la question :
    "Comment savoir si l'utilisateur a surligné un ou des enregistrements dans un formulaire affiché sous forme de liste par programmation ?"
  • Sur chargement ligne

    Au moment du passage en édition en Saisie en Liste.

    Veuillez vous reporter aux questions :
    "Comment initialiser les variables d'un enregistrement qui passe en mode édition par programmation ou par une action de l'utilisateur ?"
    "Comment permettre l'édition d'un champ ou variable dans un formulaire utilisé sous la forme de liste par programmation ?"

15-21. Pourquoi, les formules fichier ne sont pas toujours appelées avec la version 2004 ?


Les formules-fichiers associées à une table dont un formulaire est utilisé comme sous formulaire ne sont plus appelées.

Ce mécanisme n'est pas appelé même si dans les préférences de la base, dans l'onglet Application, item Compatibilité, l'option "Utiliser les formules-fichiers de la V 5.x.x" est cochée.

Cependant ce mécanisme reste actif pour les formulaires utilisés avec les commandes VISUALISER SELECTION et MODIFIER SELECTION si l'option ci-dessus est activée.

Remarque :
Il faut signaler que ce mécanisme est totalement obsolète depuis la version 6.0 et qu'il est fortement conseillé, pour cette raison, d'utiliser le mécanisme des triggers.


précédentsommaire

Copyright © 2006 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.