Ocx pour redimensionner les contrôles dans une formulaires, un contrôle personnaliser, etc.

0/5 (2 avis)

Vue 5 785 fois - Téléchargée 811 fois

Description

Après avoir vainement recherché un OCX ou une procédure simple pour redimensionner automatiquement ou presque les contrôles contenu dans un formulaire ou un contrôle utilisateur, je me suis résigné le créer moi même de toute pièce.
Vous avez dans le zip, la source, un exemple et un exemple d'utilisation dans Excel en VBA.
C'est le premier code que je met en ligne, donc vos remarques seront les bienvenues.

Conclusion :


Commen ça marche ? simple, le contrôle a 2 mode de fonctionnement l'un est complètement automatique, l'autre est manuelle (par défaut).
En réalité, seule la partie de configuration est automatique ou manuelle.
En manuel, la première chose à faire est de définir le parent, puis on ajoute les contrôle grâce à la ligne de commande :
ResizerContrôle1.Resizers.Add "Nom du Contrôle",Contrôle
Ensuite, on peut configurer le coomportement de chaque contrôle (top, left, right, bottom) et dire si une partie est affectée ou non, si elle a un mini ou un maxi, si elle est liée à un autre contrôle de la liste et le décalage souhaité, etc.
Si vous est en automatique, ses propriétés sont éditables dans le panneau des propriétés.
Si vous l'utiliser dans un UserControl, il est préférable de ne pas utiliser le mode automatique.
Enfin, il ne vous reste plus qu'à appeler la fonction de redimmensionnement (ResizerControl1.ResizeControls) lors des évènement Resize, ou celui que vous voulez ;))

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

night28
Messages postés
4
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
28 juillet 2005
-
Merci pour ton encourragement !

Hé non je n'utilise pas le sous-classement, ça permet une plus grande souplesse d'utilisation. en effet j'ai créer ce contrôle pour l'utiliser dans un contrôle personnalisé.
Je ne m'occupe pas du chargement des objets.

J'ai corrigé la gestion des mini et maxi en taille.
Les objets se superpose toujours si on réduit trop mais là c'est normal, je pense introduire un bloquage du redimmentionnement dès qu'on atteint un mini ou un maxi.
Je vais aussi essayer de faire redimmensionner la taille des polices de caractère des contrôles de façon à ce que ce soit plus joli.

PS: si tu fonctionnes en automatique et que tu crées un contrôle de façon dynamique, le contrôle s'en aperçoi et redimmensionnera le nouveau contrôle !

A+ pour de nouvelles aventures
bouv
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
-
Oui, vraiment pas mal. Redimmensionnement des controles fluide (contrairement à l'une de mes sources).
Je n'ai pas eu le temps de regarder le code, mais je pense que tu dois utiliser le sous-classement des objets. N'est-ce pas ??

Par contre un petit défaut et que lors du redimmensionnement si l'on réduit trop par exemple, les objets ne retrouvent par leur place et se superposent parfois. En fait tu dois recharger à chaque redim la position des objets. Je te conseil dans ce cas de charger une seule fois la position des différents objets au chargement de la feuille et de les redimmensionner ensuite.
Jette un oeil sur ma source pour cela si tu veux :
http://www.vbfrance.com/code.aspx?ID=27455
Dans Resizer.ctl interresse toi à :
Public Sub Chargement()
et
Public Sub Redimensionner()


Bonne prog
++

PS : Je noterai quand cela sera résolu (pour l'instant un bon 8/10 mais comme on peut noter qu'une fois j'attend)

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.