4D v14

Script de la vidéo

Accueil

 
4D v14
Script de la vidéo

Script de la vidéo  


 

 

Bonjour,
dans cette vidéo nous allons apprendre à créer et programmer les tableaux ainsi que les objets permettant de les représenter dans les formulaires.

Comme une variable simple, un tableau doit être :

  • déclaré
  • puis valorisé
  • et enfin utilisé.

Pour bien comprendre nous allons créer un premier tableau dans le formulaire DETAIL de la table INTERVENTIONS.

Ce tableau concernera les objets
Nous devons donc :

  1. créer le tableau en mémoire
  2. mettre un objet sur le formulaire capable de représenter ce tableau en mémoire
  3. vérifier que le tableau contient les bonnes informations
  4. puis lorsqu'on sélectionne dans le tableau transférer la valeur dans le champ

Pour simplifier les manipulations, nous allons mettre l’ensemble de la programmation dans l’objet. Ça nous permettra au passage de réviser la notion d’événement.

  • nous allons sélectionner l’objet popup/liste déroulante
  • tracer à droite du champ OBJET.
  • on le nomme PopObjets
  • on coche l'événement Sur chargement et sur clic
  • puis on édite la méthode.

 $evt:=Evenement formulaire
 Au cas ou
    :($evt=Sur chargement//avant l'affichage du formulaire
       TABLEAU TEXTE(PopObjets;5) //Définition du tableau (Type, Nom et nombre de lignes)
 
  //remplissage des lignes du tableau
       PopObjets{1}:="Formation"
       PopObjets{2}:="Logiciel"
       PopObjets{3}:="Matériel"
       PopObjets{4}:="Réseau"
       PopObjets{5}:="Système"
 
    :($evt=Sur clic//quand l'utilisateur choisit une ligne dans le tableau
       Si(PopObjets#0) //si l'utilisateur a choisi une ligne
          $LigneChoisie:=PopObjets //on mémorise la ligne choisie
          $ValeurChoisie:=PopObjets{$LigneChoisie//on mémorise la valeur contenue dans cette ligne
          [Interventions]Objet:=$ValeurChoisie  //on affecte la valeur au champ
       Fin de si
 Fin de cas

La méthode objet va être composée d'un certain nombre de lignes :

  • dans un premier temps le test sur l'événement.
  • Si on est sur chargment on créer un tableau de 5 lignes, la 1ère contiendra "formation" etc
  • et lorsqu'on cliquera sur l'objet on effectuera le transfert ici dans l'objet.

Nous allons tracer le fonctionnement de cette méthode en faisant un 1er test.

On voit lors du double-clic sur une intervention qu'on passe sur chargement.

Nous allons pouvoir afficher le tableau qui contient bien 5 éléments et les 5 éléments sont bien valorisés au fur-et-à-mesure.
L'intervention apparaît.

Lorsqu'on choisit une valeur dans le menu on voit ici le numéro de ligne indiqué dans une variable, qui est une variable qui porte le même nom que le tableau, mais qui est une variable de type entier long

et on voit ici les 6 lignes du tableau, les lignes de 1 à 5 plus la ligne zéro sur laquelle nous reviendrons ultérieurement.

A l'éxécution de cette méthode :

  • l'événement concerné est bien "sur clic".
  • on vérifie qu'une ligne ait bien été choisie.
  • si la ligne a été choisie on peut :
  •      - passer par une variable intermédiaire 'lignechoisie" ici
  •      - récupérer la valeur choisie, si on regarde valeur choisie elle contient bien "matériel"
  •      - et on transfère bien cette valeur choisie dans l'objet.

Il est possible de remplacer ces 3 lignes par une seul sous la forme

 [Interventions]Objet:=PopObjets{PopObjets}

Pourquoi ?

Car cette valeur ici est la variable entier long qui contenait 3 tout à l'heure, donc qui indique le numéro de ligne du tableau concerné (qui porte le même nom).
Pour des questions génériques, vous trouverez souvent dans les développements ce type d'écriture :

 [Interventions]Objet:=Self->{Self->}

qui utilise un pointeur vers l'objet.

Puisque la programmation est effectuée actuellement sur l'objet lui-même self fait référence à l'objet et lorsqu'on on écrit Self->{Self->},

on indique le tableau {à la ligne choisie dans le tableau} et on transfère le contenu directement dans l'objet.

On va tracer ça pour vérifier qu'on obtienne bien le même résultat.

  • donc actuellement nous avons bien dans [intervention]objet "réseau".
  • si on affiche PopObjets{PopObjets} on a bien "réseau"
  • si on affiche Self->{Self->} on a bien "réseau"

Donc ce découpage permet de bien comprendre en détail.
Cette écriture est l'écriture la plus générique et la plus portable.

Nous allons maintenant créer un nouveau tableau qui permet de saisir la date à plus ou moins 10 jours.

  • Je duplique l'objet
  • je le renomme
  • je copie
  • et modifie sa méthode.

Pour l'initialisation nous le verrons par la suite il s'agit d'un tableau date de 21 lignes : aujourd'hui + 10 jours -10 jours
et on écrira le code le plus condensé de cette manière
Maintenant comment remplir les lignes ? Nous allons faire une boucle dans laquelle on valorise le tableau de cette manière (date du jour + $i-11).

Le tableau bien évidemment portera le bon nom et maintenant on peut tester :
et on voit ici lorsqu'on choisit une valeur dans le tableau, automatiquement elle est reportée à côté sur la date d'intervention.

Maintenant que vous savez programmer les tableaux il est possible dans 4D de les représenter dans différents objets, par exemple dans une listbox.

Une listbox étant un objet composé de une ou plusieurs colonnes avec une entête et une colonne et c'est justement la colonne qui nous intéresse, dans laquelle on va juste écrire le nom du tableau que nous avons géré en mémoire.

Si maintenant nous retournons sur une intervention, la listbox contient bien les différentes valeurs du tableau et on voit la synchronisation directe entre le choix dans la listbox et la correspondance dans le tableau ici.

Nous allons de la même manière programmer la listbox pour que lorsqu'on clique ou lorsqu'on effectue une nouvelle sélection sur cette listbox, automatiquement la valeur de l'objet soit modifiée.

Donc dans la listbox nous cochons les propriétés sur clic et sur nouvelle sélection.

Il y a juste maintenant à recopier cette ligne dans la méthode objet de la listbox :

 [Interventions]Objet:=PopObjets{PopObjets}

A l'utilisation lorsqu'on sélectionne une valeur dans la listbox à la souris ou avec les flèches du clavier, automatiquement les valeurs sont transférées.

Il serait bien évidemment possible également de faire du glisser déposer si les zones étaient glissables et déposables.

 
PROPRIÉTÉS 

Produit : 4D
Thème : Tableaux, popup, listbox
Nom intl. : Video script

 
UTILISATION DE L'ARTICLE

Autoformation ( 4D v13)
Autoformation ( 4D v14)