Tri des en-têtes de colonnes dans FileMaker

Dans un tableau de données, il est courant de cliquer sur l’en-tête d’une colonne pour trier les données. Cependant, il est rare de trouver un système FileMaker qui le fasse avec élégance ; je souhaite vous présenter une solution qui rend le tri des en-têtes de colonne dans FileMaker plus modulaire, et j’espère que vous serez d’accord pour dire qu’elle est également plus élégante.

J’utilise dans cet article quelques techniques peu courantes. Je les détaille ci-dessous, puis je vous montre comment tout cela fonctionne.

Les techniques qui rendent cela possible

Trier les enregistrements par champ

Cette action de script existe depuis FileMaker Pro 12. Malgré sa longévité, beaucoup de gens ne savent pas comment en tirer pleinement parti ; je pense que son nom y est pour quelque chose. La plupart des développeurs utilisent cette action de script, mais spécifient toujours une rubrique lors de sa configuration.

Saviez-vous que vous pouvez utiliser cette action de script sans spécifier de champ ? Ainsi, elle fonctionnera avec le champ actif. Grâce à cette fonctionnalité cachée, nous pouvons rendre nos tris modulaires et les utiliser dans nos présentations de liste sans aucune modification supplémentaire.

Barres de boutons comme calculs au niveau de la mise en page

Lors du développement dans FileMaker Pro, vous aurez parfois besoin que le contenu d’une étiquette change dynamiquement en fonction de certaines conditions ; il existe plusieurs façons d’y parvenir. Certains développeurs choisissent de créer un nouveau champ de calcul dans l’une de leurs tables, dont la formule produira le résultat approprié. D’autres créent plusieurs étiquettes et les masquent/affichent simplement selon diverses conditions.

J’ai récemment pris goût à utiliser une barre de boutons à segment unique et à y inscrire mes conditions dans la formule de son libellé. À mon humble avis, c’est une excellente solution, car cela n’encombre ni votre schéma de base de données ni votre mise en page, et conserve la logique là où elle est la plus pertinente. Cet article est une excellente lecture sur la polyvalence des barres de boutons.

Notre plan

Avant d’entrer dans les détails, prenons un moment pour regarder un exemple de capture d’écran d’un système déjà configuré pour un tri élégant.

Tri dans FileMaker
Tri dans FileMaker

Dans cette mise en page, il y a un certain nombre de colonnes triables, ce qui explique en partie ma volonté de simplifier un peu les choses. Cette capture d’écran montre clairement qu’une des colonnes est déjà triée. C’est là que nous en serons une fois terminé.

Retour à notre programmation

Créer une fonction personnalisée

L’un de nos objectifs étant de maintenir l’élégance de notre code, nous allons créer une fonction personnalisée. Cela rendra tout notre code facilement lisible tout au long de cet exercice.

Cette fonction personnalisée accepte un nom de référence de champ comme paramètre (_sortField). Elle renvoie une flèche si le champ référencé est celui utilisé lors du tri le plus récent. Plus précisément, elle renvoie une flèche vers le haut si le champ est trié par ordre croissant, et une flèche vers le bas s’il est trié par ordre décroissant. Nous utiliserons cette fonction personnalisée dans les libellés des en-têtes de colonnes ci-dessous.

Veuillez noter que j’ai utilisé cette page pour m’aider à trouver des représentations textuelles de flèches que je pourrais utiliser dans cette fonction personnalisée.

Définition de la fonction personnalisée

En-têtes de colonnes

Définissons une barre de boutons à segment unique pour chaque en-tête de colonne de notre vue liste. Cela nous permettra d’avoir à la fois la fonctionnalité de bouton nécessaire et la fonctionnalité de calcul nécessaire pour déterminer le libellé (ce qui nous permettra d’utiliser notre fonction personnalisée).

Dans la fenêtre Spécifier le calcul qui vous permet de définir l’étiquette de chacun d’entre eux, vous aurez besoin d’une formule du type :

"Actual Label" & SortArrowForField ( "ActualLabelReferenceName" )

« Étiquette réelle » est ce que l’en-tête de colonne indiquera réellement.


« ActualLabelReferenceName » est un nom unique que nous choisirons pour référencer cette colonne. Nous l’appellerons ci-dessous « Nom de référence ».

Prendre du recul

À ce stade, nous en sommes déjà au point où nous souhaiterions normalement commencer à scripter les tris. Cependant, nous ne sommes pas encore tout à fait prêts. Prenons du recul et réfléchissons.

Dans mon cas, la mise en page que j’utilise ne permet pas la saisie de champs en mode navigation. Cela signifie que je ne peux activer aucun champ de ma liste. Par conséquent, l’approche décrite ci-dessus ne fonctionnerait pas. Si vous pouvez cliquer sur les champs de votre liste en mode navigation, vous pouvez ignorer cette étape.

Si vous rencontrez le même problème, ne vous inquiétez pas. Nous pouvons résoudre ce problème.

Champs cachés ajoutés à la mise en page

Une solution simple consiste à dupliquer chaque champ affiché en mode liste. Chaque nouvelle version de ces champs doit comporter au moins deux paramètres :

  1. Assurez-vous que les champs sont saisissables en mode Navigation
  2. Définissez leur condition « Masquer quand » sur « Vrai » (afin qu’ils soient toujours masqués)

J’ai coloré mes champs masqués en vert pour les distinguer des champs normaux. Vous ne pourrez voir ces champs verts qu’en mode Mise en page ; vos utilisateurs ne les verront jamais et ne pourront pas interagir directement avec eux.

Connecter nos boutons aux champs

Maintenant que nos champs sont actifs, nous pouvons poursuivre notre exploration. Nous allons maintenant lier nos boutons d’en-tête de colonne aux champs correspondants. Nous utiliserons une convention de nommage simple pour chacun de nos champs saisissables. Chaque champ peut recevoir un nom d’objet via l’inspecteur.

Si vous n’avez pas créé ces champs plus tôt, assurez-vous d’appliquer une convention de nommage similaire aux champs réels dans le corps de votre vue de liste.

Nous pouvons préfixer chacun de ces noms d’objet par « sort_ ». Après ce préfixe, nous utiliserons les mêmes noms de référence que ceux utilisés dans les barres de boutons correspondantes.

Scripting des tris

Maintenant que tous les champs ont des noms d’objet, nous pouvons ajouter un script générique à notre système. C’est le script que nous utiliserons pour toutes nos présentations de liste. C’est assez simple une fois décomposé.

Script pour trier les listes

Ce script :

  1. Récupère le paramètre du script
  2. Détermine le sens du tri (croissant ou décroissant)
  3. Stocke le nom de référence du champ de tri et le sens de tri dans les variables globales
  4. Effectue le tri

Bien sûr, ce script pourrait être amélioré avec une gestion des erreurs appropriée, etc., mais je voulais garder les choses simples pour les besoins de ce tutoriel.

Utilisation du script de tri de liste

Maintenant que notre script de tri est écrit, utilisons-le. Chaque en-tête de colonne doit déjà être une barre de boutons avec un seul segment. Il ne reste plus qu’à attribuer une action au segment de la barre de boutons. Nous souhaitons exécuter un script lorsque la barre de boutons est activée et lui transmettre le nom de référence approprié spécifié précédemment.

Cela devrait ressembler à ceci (photo de droite). Une fois que vous avez fait la même chose pour chaque en-tête de colonne, lancez-vous. Vous devriez déjà trier.

Nous aimerions savoir si cette méthode vous convient ou si vous préférez une autre méthode pour trier les colonnes. Dites-le-nous dans les commentaires et bon développement ! Nous sommes toujours là pour vous aider avec votre solution FileMaker.