Formulaires, listes et dashboards dynamiques
Statut documentaire : guide — voir Maturité et preuves.
Les interfaces complexes sont des assemblages de composants fonctionnels stables sur des surfaces de données et contrats d’événements déclarés. Les construire depuis le modèle vers le rendu plutôt que d’intégrer les sémantiques métier dans un écran particulier.
Formulaires
Lier les champs d’édition à un DataSource, utiliser un DataCursor pour l’objet courant, valider via hooks before-post et/ou actions métier, puis poster explicitement. Un formulaire est une projection d’objet, pas un substitut au contrat métier de l’objet.
Listes et grilles
Lier les composants liste/tabulaire à un DataSource alimenté par une collection ou requête. Les changements de curseur établissent le contexte des détails et panneaux d’actions. Le filtrage peut utiliser un DataSet dédié afin que les critères UI temporaires restent séparés de l’état persisté.
Composants de sélection
Autocomplétion, lookup et sélecteurs consomment des DataSources de lookup. Leur contrat fonctionnel précise sélection simple/multiple/conditionnelle, valeur affichée, identifiant et contexte. Les recherches distantes sont debouncées et cachées derrière la couche de données de page.
Vues scindées et à onglets
Traiter split/tabbed comme composition fonctionnelle. Une région maître peut porter le curseur principal ; les régions enfants se lient à des DataSets dépendants ou au même curseur. La sélection d’un onglet reste généralement locale ; seules les intentions explicites franchissent la frontière applicative.
Dashboards
Un dashboard assemble des surfaces calculées ou requêtables, composants de statut et régions réactives. Garder le calcul métier dans le modèle/provider et mapper le résultat vers l’état visuel dans la page. Ne pas encoder le calcul métier dans la visibilité d’un widget.
Navigation
Préférer des événements sémantiques tels que ShowView, OpenObject, MoveNext ou Refresh avec cible/contexte explicites. Éviter les événements nommés d’après des ids de composants.