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

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

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.