Liste Box et contenu Heure

Olivier Marolleau

Produit : 4D 2004 · Plateforme : Mac & Win ♪

- Titre : Liste Box et contenu Heure

- Auteur : Olivier Marolleau

- Parution : 18 avril 2005

- Licence : Copyright ® 2005 4D s.a.. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.

Sommaire

- I. Introduction

- II. Qu'est-ce qu'une colonne heure ?

- III. Affichage de notre colonne heure

- IV. Exemple pratique, insérer une colonne heure

- V. Conclusion

I - Introduction

La Listbox est une implémentation qui ouvre de nouveaux horizons aux développeurs 4D, mais un point assez obscur subsiste quant à son utilisation avec les colonnes de type heure.

Ce tip va donc essayer de vous guider dans l'utilisation et la programmation d'une colonne heure pour Listbox, afin de vous éclairer sur ce sujet.

II - Qu'est-ce qu'une colonne heure ?

Les colonnes d'une listbox sont en fait des tableaux de variables. Donc une colonne pour listbox affichant des heures est un tableau d'heures, ce qui paraît logique.

Pas exactement pourtant --ceux qui connaissent bien 4D le savent--, il n'existe pas de tableau pouvant contenir des heures dans 4D.

En fait une heure ne peut être stockée dans un tableau que sous la forme d'entier long. Cela revient à dire que nous stockons en fait la durée en seconde de l'heure voulue, et non cette dernière. Par exemple « 01 :30 :00 » deviendra dans notre tableau « 5400 », soit 5400 secondes.

Donc, pour obtenir une heure valide dans un tableau d'entier long, il faut transformer cette heure en entier long. Le plus simple est d'utiliser par exemple la commande SELECTION VERS TABLEAU qui fera automatiquement la conversion du format heure.

III - Affichage de notre colonne heure

Une fois que nos heures sont stockées dans un tableau entier long, il ne nous reste plus qu'à afficher la listbox ou à insérer le tableau comme une nouvelle colonne de notre listbox.

À l'affichage voilà ce que cela donne :

Notre colonne apparaît bien, elle n'est pas composée d'heures, mais d'entiers longs, ce qui est logique puisque c'est le temps en secondes (souvenez-vous que nous avons transformé l'heure en entier long).

La liste box affiche donc notre tableau entier long sans savoir que ce tableau représente en fait des heures. Maintenant, comment récupérer notre format heure de départ ?

Deux solutions s'offrent à vous, selon le cas où votre colonne liste box est figée ou créée dynamiquement.

Dans le cas d'une liste box figée, où notre colonne heure existe à la création de la liste box, il suffit de changer le type de variable de notre colonne incluse dans la liste box. Ici la « colonne3 » est liée au tableau entier long « colonne3 » :

Le fait de fixer le type de notre colonne3 comme heure force 4D à formater automatiquement à l'affichage nos valeurs d'entier long à heure.

Deuxième cas : nous créons la colonne3 dynamiquement. Nous ne pouvons plus définir le type de variable. Il faut alors modifier par programmation l'affichage de notre colonne3 par la commande « CHOIX FORMATAGE », dont voici un exemple :

1. CHOIX FORMATAGE (*;"Colonne3";"&/1")

Une chose saute aux yeux ici : au lieu de passer un format d'heure, nous passons le paramètre « &/x », ou x est le numéro de constante de format heure.

Le fait de passer « &/ » force 4D à retranscrire l'entier long en format heure.

Pour information voici la liste des formats disponibles :

IV - Exemple pratique, insérer une colonne heure

Dans cet exemple, nous allons ajouter dynamiquement une nouvelle colonne heure à notre listbox 1. La base exemple devra contenir 3 champs :

Champ1 en type alpha 16, Champ2 en type alpha 16, Champ3 en type heure.

Les formulaires utilisés sont créés par défaut dans 4D, il faut ajouter quelques données puis une liste box à 2 colonnes dans le formulaire d'entrée ainsi qu'un bouton.

Dans ce dernier, collez le code ci-dessous :

Une fois le code exécuté à partir du bouton, vous obtiendrez ce résultat :

V - Conclusion

Vous obtenez maintenant une liste box qui affiche correctement une colonne heure, et qui se compilera sans aucune difficulté.