Formulaires de saisie avec beaucoup de champs? - Delphi/Pascal - Programmation
Marsh Posté le 05-09-2006 à 09:37:51
Pas fait ce genre de truc, mais à vu de nez, je dirais qu'une liste d'onglet (TTabControl) avec un DBGrid dans chaque serait pas mal (et un select partiel par DBGrid)
Maintenant, est-ce que les utilisateurs preférerons les onglets au scroll?
Marsh Posté le 05-09-2006 à 17:02:56
el zozo a écrit : Pas fait ce genre de truc, mais à vu de nez, je dirais qu'une liste d'onglet (TTabControl) avec un DBGrid dans chaque serait pas mal (et un select partiel par DBGrid) |
Oui, je pensais plutôt à ça. C'est facile de remplir plusieurs DBGrid, chacun localisé dans un onglet, et d'enregistrer toutes les modifs d'un coup lorsqu'on clique sur Enregistrer?
el zozo a écrit : Maintenant, est-ce que les utilisateurs preférerons les onglets au scroll? |
Clairement, vu qu'on a vite laissé tomber le scroll, justement parce que les utilisateurs ne supportaient pas. A la place, on utilise des fenêtres indépendantes, chacune avec un grid qui reprend une partie des colonnes des tables. Je crois qu'on n'a pas utilisé l'objet Tab de VB parce qu'il buggait.
Merci.
Marsh Posté le 05-09-2006 à 17:36:34
fredtheman a écrit : Oui, je pensais plutôt à ça. C'est facile de remplir plusieurs DBGrid, chacun localisé dans un onglet, et d'enregistrer toutes les modifs d'un coup lorsqu'on clique sur Enregistrer?. |
Créer une liste d'onglet avec une grille de saisie, pour 12 personnes
temps : 15 minutes
ingredients:
1 fenetre (TForm)
1 connexion (TADOConnection ou TConnection. Je prefere l'ADO pour tout un tas de raisons)
1 classeur (TTabSheet, plus pratique ici que TTabControl)
5 requete (TADOQuery ou TQuery)
5 Datasources (TDatasources)
5 Grilles de données(TDBGrid)
Préchauffer le processeur à 35°C
Associer la connexion avec une base de données valide
Créer un TTabSheet sur la fenetre à l'emplacement désiré
Créer 5 pages dans le claseur (bouton droit, puis "nouvelle page" )
Dans chacune des pages, créer un TDBGrid. Définir la propriété Align à alClient
Créer 5 requetes et 5 datasources
Associéer chaque requete à la connexion
Remplir le code SQL de la premiere requete avec un code du genre "select a,b,c,d from MaTable"
Remplir le code SQL de la premiere requete avec un code du genre "select e,f,g,h from MaTable"
proceder de mème avec les autres requetes.
Associer chaque requete à un Datasource (propriete "dataset" du datasource)
Associer chaque DBGrid à un DAtasource (propriete "datasource" de la grille)
Ouvrir la connexion (connected = true)
Ouvrir chaque requete (active=true)
Demouler : les données doivent déja apparaitre dès la phase de conception
Compiler.
Quand le four beep, sortez du four et servez en l'état
(j'ai pas tester, mais en gros, c'est ça)
Marsh Posté le 10-09-2006 à 17:43:37
el zozo a écrit : Créer une liste d'onglet avec une grille de saisie, pour 12 personnes |
Merci pour le cours de cuisine :-)
> 1 connexion (TADOConnection ou TConnection. Je prefere l'ADO pour tout un tas de raisons)
En fait, vu le contexte, j'aimerais utiliser une DB qui nécessite le moins de dépendence possible. ADO, ça ne nécessite pas d'installer MDAC, etc.? Je pensais plutôt utiliser un système embedded comme SQLite ou FireBird (en mode sans serveur), ou FireBird en mode serveur s'il y a vraiment trop de problème d'accès concurrents.
> 1 classeur (TTabSheet, plus pratique ici que TTabControl)
Je suis paumé entre : TPageControl, TTabControl, TTabSheet, et les forms avec des frames (où frames = ensemble d'objets enregistrés réutilisable?). Tu pourrais résumer l'intérêt et avantages/inconvénients de chaque objet?
Merci.
Marsh Posté le 10-09-2006 à 19:26:54
TPageControl : j'sais pas
TTabControl : c'est un composant qui se limite à un ensemble d'onglet (sans page associées)
TTabSheet : Un ensemble d'onglet avec un container (genre TPanel) associé à chacun. Ca permet de "designer" chaque page à la conception.
Marsh Posté le 12-09-2006 à 17:08:41
el zozo a écrit : TPageControl : j'sais pas |
Merci. Vais cuisiner :-)
Marsh Posté le 05-09-2006 à 01:30:15
Formulaires de saisie avec beaucoup de champs?
Bonjour
Je profite de notre passage de VB (5) à Delphi (7 ou 2006; pas décidé encore) pour revoir la façon dont nous gérons les formulaires de saisie de données.
En VB, nous n'utilisons pas les objets liés aux bases de données, et gérons l'entrée de données nous-mêmes avec un objet tableur et une base SQL.
Le problème, c'est que certains formulaires contiennent beaucoup trop de données pour rentrer dans une seule fenêtre/form, ce qui nous oblige à soit obliger l'utilisateur à scroller pour voir les champs suivant en bas, soit à fractionner le formulaire en plusieurs fenêtres plus petites (en utilisant aux choix des fenêtres/forms indépendantes, ou un objet Tab). Voici un exemple de la première méthode:
http://codecomplete.free.fr/vb_input_form.jpg
En fait, les utilisateurs n'aiment pas scroller, ce qui fait que la plupart des écrans de saisie sont fractionnés en plusieurs fenêtres, chacune hébergeant une partie de l'écran de saisie.
=> Alors... comment gérez-vous ces situations où les utilisateurs doivent remplir beaucoup de champs dans des formulaires de saisie? Il doit bien exister de meilleures solutions que celles que nous avons utilisé jusqu'ici.
Merci pour toute piste :-)