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 536 fois - Téléchargée 1 174 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

cs_max12
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014
-
"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"

Tu pourrais me cîter l'adresse que je regardes ça ?
PS : Si vous en connaissez d'autres mauvaises, dîtes-le moi en PV SVP.

A+
celiphane
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007
-
salut max12,

je n'ai pas la prétention de faire de la délation, comme quoi la source que j'ai cité est une hérésie, d'ailleurs, je peux changer mon introduction si tu le souhaites.

La source en question est ici : http://www.vbfrance.com/code.aspx?id=30625

En fait, elle est nommée GENERATEUR DE FORMULAIRES, alors qu'elle aurait plutôt dûe s'appeler OUVRIR PLUSIEURS FOIS LA MEME FEUILLE, car elle montre comment instancier et charger une form.

En l'ouvrant, je m'attendais à voir un générateur de formulaire avec des champs à remplir etc... mais comme ce n'était pas le cas, ça m'a fait penser à poser une source qui justement le fait, c'est à dire celle-ci ;)

@+
Celiphane
cs_max12
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014
-
celiphane> C'est correct, je voulais seulement voir car je trouves que malheureusement ça se laisse de plus en plus aller dans les présentations des sources (Mauvais titre, aucune description, etc ...). Et j'avoue que je l'ai déjà fait aussi avant (Je corrige parfois, j'en ai plusieurs). C'est aussi important que la source elle-même car si on veut la trouver dans le moteur de recherche il est évident qu'il faut une bonne présentation. Et ça ralenti considérablement la recherche quand l'on ouvre le ZIP pour savoir ce qu'il y a vraiment dans une source. C'est pour cette raison que je demandes ça, c'est important que le site soit propre pour qu'il garde sa pertinence, pas dans le but d'énerver les membres où de se permettre de faire du tri de ce qu'on aime ou ce qu'on aime pas.

Je donnes ces précisions pour d'éventuelle lecture de la part de plusieurs membres :)

Lorsque vous trouvez une sources comme j'ai décris plus haut, ne vous gênez pas, je ne la supprimerai pas nécéssairement, je demanderai à l'auteur de spécifier un peu plus tous simplement.

A+

PS : Merci pour ta contribution Celiphane ;)
cs_FoxTrot
Messages postés
6
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
13 janvier 2006
-
Très efficace (comme dans beaucoup de tes sources) ! 10/10

Cependant, j'ai vu que tu parlais dans ton explication finale d'un code de comparaison de 2 chaines, qui donnait un pourcentage...
Ca serait une bonne source à poster sur VBFRance...

Merci Celiphane.
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

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.