Class pour generer dynamiquement des controles dans un conteneur, pour creer des formulaires dynamiques

Soyez le premier à donner votre avis sur cette source.

Vue 9 601 fois - Téléchargée 1 205 fois

Description

Quelques sources juste avant celle-ci, se trouve une source nommée GENERATEUR DE FORMULAIRE.
Ce qu'elle contient n'étant pas du tout ce qu'elle annonce, je me permets (sans aucune dénigrance de l'auteur de la source que j'ai citée, bien entendu) de poser cette class que j'ai développé il y a longtemps, et que j'ai utilisé dans diverses applications professionnelles.

La ClassDerouleurControles sert réellement à générer des formulaires dynamiques, elle est clé en main.

Vous pouvez regarder la capture ci-jointe pour avoir une illustration de son fonctionnement.

La Class possède ces méthodes :

- AjouterLigne
>pour ajouter une ligne de plus, selon le schéma donné initialement

- EffacerLigne (index)
>pour enlever l'une des lignes présentes, notament la numéro Index

- NombreLignes
> renvoie le nombre de ligne en cours

- ToutEffacer
> efface toutes les lignes ajoutées

- DernierControleAjoute (IndexCollection)
> retourne le dernier controle ajouté (donc de la dernière ligne), et plus particulierement le controle Numero IndexCollection. Par exemple, si vous avez initialisé la class avec TextBox, Button, CheckBox, alors pour avoir le dernier TextBox, IndexCollection sera 0, 1 pour le Button et 2 pour la CheckBox. (regardez l'exemple dans le ZIP)

- Init(ByVal LaisserMarge As Boolean, ByVal LimiteContainer As Long, ByVal EspacementLigne As Long, ByVal AscenseurVertical As VScrollBar, ParamArray ControlesIndexes() As Variant)
> obligatoire pour initialiser le conteneur de champ dynamique, donc la Class.
> LaisserMarge permet lors d'un ajout, lorsque le nombre de champ nécessite un ascenseur, de laisser ou non une petite marge d'espace libre en dessous de la dernière ligne
> LimiteContainer est la hauteur du conteneur. Si la dernière ligne ajoutée dépasse cette limite, la class renseignera l'ascenseur pour le défilement.
> EspacementLigne est la distance à placer entre chaque ligne.
> AscenseurVertical est le Vscrollbar associé au conteneur, pour permettre le défilement.
> Ensuite, vous pouvez inscrire le nom des collections de contrôles créé, un par un.

Regardez les 2 exemples à disposition dans le ZIP pour comprendre le fonctionnement.

Ce qu'il vous faut pour créer un formulaire dynamique (vous le verrez dans les exemples de toute facon), c'est :
- la Class
- un conteneur quelconque (la form par exemple)
- poser dans ce conteneur les controles qui formeront une ligne du formulaire, et mettre l'index de chacun d'eux à 0. Ils seront la ligne "modèle".
- Mettre un ascenseur vertical, au cas où le nombre ligne ajouté dépasse le conteneur.
- initialiser la Class

Conclusion :


Illustration, exemple réel.

Cette Class m'a servi notament dans un projet de dédoublonnage de contacts dans une immense base de donnée texte :
le programme chargeait les entrées, opérait le dédoublonnage en regroupant les contacts qui lui semblait similaire (l'algorithme utilisé est vraiment très bluffant... il renvoie un pourcentage de correspondance entre les 2 chaines) puis affichait ces entrées quasi identique justement grâce à cette Class. Compte tenu du fait que le nombre de doublons pour un nom pouvait être de 2 à l'infini, elle était très efficace, et contenait des champs texte pour affiché les données des doublons par ligne, une case à cocher pour que l'utilisateur coche les lignes qu'il voulait conserver (les autres était effacée lorsqu'il passait aux groupes de doublons suivant).

Par exemple, on avait à l'écran grâce à cette Class :

Dupont Martin [X]
Dupond Martin [ ]
Dupon Martin [ ]

Là l'utilisateur fait suivant, ca supprime Dupond et Dupon car non coché, puis on passait à l'autre groupe de doublon :

Poulet Yves [X]
Poules Yves [ ]
Poulle Yves [X]
Poulel Yves [ ]
Poulai Yves [ ]

Merci de laisser vos commentaires après l'avoir essayée, et compris son fonctionnement (quoi de plus normal) ;)

@+
Celiphane

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
70
Date d'inscription
mercredi 21 août 2002
Statut
Membre
Dernière intervention
22 février 2008

Bravo, j'ai mis 9/10.
J'aurais mis 10/10 si la gestion de la touche TAB était poussé à son maximum.
Je m'explique :
Arrivé en bas de la fenetre, en cliquant sur la touche TAB le focus s'en va au lieu de passer à la ligne suivante cachée si existante (Il faut donc jouer avec le scroll).
Gilardh
Messages postés
6
Date d'inscription
vendredi 4 juillet 2003
Statut
Membre
Dernière intervention
20 avril 2005

Simplement super...bravo
Messages postés
6
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
13 janvier 2006

Merci Céliphane. Cette nouvelle source va simplifier la vie de nombreux programmeurs. :-)
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007

Voilà, rendez-vous ici pour la fonction de similitude entre 2 chaines :

http://www.vbfrance.com/code.aspx?ID=30685

De rien !

@+
Celiphane
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007

FoxTrot>
Je vais d'ici peu poser une source la dessus alors...
Je te tiens au courant ici même.

@+
Celiphane
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.